{"version":3,"file":"table.min.js?v=4d821da2c7b5c88e11fe","mappings":"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","sources":["webpack://ui-toolkit/./sass/blocks/table.js"],"sourcesContent":["require('footable');\r\nrequire('tocca');\r\nvar $ = require('jquery');\r\nvar WS = require('../../scripts/ws.js');\r\nvar Modernizr = require('../../vendors/modernizr.min');\r\nvar _throttle = require('lodash/throttle');\r\nvar ko = require('knockout');\r\n\r\n$(function () {\r\n var largeMq = \"(min-width: 1200px)\",\r\n mediumMq = \"(min-width: 992px)\",\r\n smallMq = \"(min-width: 768px)\";\r\n\r\n var defaultTableOptions = {\r\n columnNavigationAnimationDuration: 800,\r\n breakpoints: {\r\n large: { cols: 13, firstColumnWidthPct: 70 },\r\n medium: { cols: 5, firstColumnWidthPct: 70 },\r\n small: { cols: 3, firstColumnWidthPct: 70 },\r\n extraSmall: { cols: 2, firstColumnWidthPct: 50 }\r\n }\r\n };\r\n\r\n var $body = $(\"body\");\r\n\r\n // Responsive Table Selectors and Classes\r\n var responsiveTableSectionItemSelector = \".ws-section__item--comparison-table\";\r\n var responsiveTableLeftButtonSelector = \".ws-btn--comparison-table_left\";\r\n var responsiveTableRightButtonSelector = \".ws-btn--comparison-table_right\";\r\n var responsiveTableButtonHiddenClass = \"ws-btn--visibility_hidden\";\r\n var responsiveTableSectionItemFixedHeadersClass = \"ws-section__item--comparison-table_fixed-headers\";\r\n var responsiveTableColumnPaddingLeftClass = \"ws-data-table__heading-content--padding-left_sm\";\r\n var responsiveTableColumnPaddingRightClass = \"ws-data-table__heading-content--padding-right_sm\";\r\n var responsiveTableColumnVisibleClass = \"ws-data-table__column--visible\";\r\n var responsiveTableCellVisbleClass = \"ws-responsive-table__cell--visible\";\r\n\r\n // Sortable FooTable Heading Selectors\r\n var ascHeadingSelector = \".footable-asc .ws-data-table__heading-content--sortable\";\r\n var descHeadingSelector = \".footable-desc .ws-data-table__heading-content--sortable\";\r\n var unsortedHeadingSelector = \".footable-sortable:not(.footable-asc):not(.footable-desc) .ws-data-table__heading-content--sortable\";\r\n var headingSortIconSelector = \".ws-data-table__heading-sort-icon\";\r\n\r\n // Flag for Numeric vs. Alpha Icons\r\n var headingSortNumericIconClass = \"ws-data-table__heading-sort-icon--numeric\";\r\n\r\n // Solid Icons\r\n var unsortedIconClass = \"fa-solid fa-sort \";\r\n var sortAlphaUpSolidIconClass = \"fa-solid fa-arrow-up-a-z \";\r\n var sortAlphaDownSolidIconClass = \"fa-solid fa-arrow-down-z-a \";\r\n var sortNumericUpSolidIconClass = \"fa-solid fa-sort-amount-up \";\r\n var sortNumericDownSolidIconClass = \"fa-solid fa-sort-amount-down-alt \";\r\n\r\n // Light Icons\r\n var sortAlphaUpIconClass = \"fa-light fa-arrow-up-a-z \";\r\n var sortAlphaDownIconClass = \"fa-light fa-arrow-down-z-a \";\r\n var sortNumericUpIconClass = \"fa-light fa-sort-amount-up \";\r\n var sortNumericDownIconClass = \"fa-light fa-sort-amount-down-alt \";\r\n\r\n var allSortedIcons =\r\n sortAlphaUpIconClass +\r\n sortNumericUpIconClass +\r\n sortAlphaDownIconClass +\r\n sortNumericDownIconClass +\r\n sortAlphaUpSolidIconClass +\r\n sortNumericUpSolidIconClass +\r\n sortAlphaDownSolidIconClass +\r\n sortNumericDownSolidIconClass;\r\n\r\n var focusElement, sortInProgress = false;\r\n\r\n var headerHeight = WS.getFixedElementsHeight();\r\n\r\n WS.Tables = WS.Tables || {};\r\n WS.Tables.Parsers = WS.Tables.Parsers || {};\r\n WS.Tables.Parsers.percentageParser = function (valueOrElement) {\r\n if (FooTable && FooTable.is.element(valueOrElement)) {\r\n var thisParserData = this.parser(valueOrElement); // Use default footable parser (returns number for this cell's data).\r\n var numericValue = thisParserData ? ((thisParserData === \"--\") ? null : thisParserData.replace(\"%\", \"\")) : null;\r\n\r\n return numericValue\r\n ? (-1 * numericValue) // Reverse footable sorting behavior.\r\n : 9999; // Treat non-data as very large value to display at end when ascending.\r\n }\r\n\r\n return null;\r\n };\r\n WS.Tables.Parsers.starParser = function (valueOrElement) {\r\n if (FooTable && FooTable.is.element(valueOrElement)) {\r\n var thisParserData = this.parser(valueOrElement); // Use default footable parser (returns HTML string for this cell's data).\r\n\r\n if (thisParserData) {\r\n var starMatches = thisParserData.match(/\"ws-data-table__star\"/g);\r\n\r\n return starMatches\r\n ? (-1 * starMatches.length) // Reverse footable sorting behavior.\r\n : 9999; // Treat non-data as very large value to display at end when ascending.\r\n }\r\n }\r\n\r\n return 9999;\r\n };\r\n\r\n WS.Tables.EventHandlers = WS.Tables.EventHandlers || {};\r\n WS.Tables.EventHandlers.keypress = function (event) {\r\n // Check to see if space or enter were pressed\r\n var keyCode = (event.keyCode ? event.keyCode : event.which);\r\n if (keyCode === 13 || keyCode === 32) {\r\n // Prevent the default action to stop scrolling when space is pressed\r\n event.preventDefault();\r\n event.target.click();\r\n\r\n setTimeout(function () {\r\n var e = jQuery.Event(\"keydown\");\r\n e.which = keyCode;\r\n e.keyCode = keyCode;\r\n $body.trigger(e);\r\n }, 0);\r\n }\r\n };\r\n\r\n $(\".ws-responsive-table__table--clone:not(.ws-responsive-table__table--editing)\").each(function () {\r\n // this overlays any responsive table with a copy of itself, with only the first column visible, so the first column appears frozen/static.\r\n // this causes issues in experience editor, so don't run this code when editing\r\n var overlay = $(this).clone();\r\n $(overlay).removeClass(\"ws-responsive-table__table\").addClass(\"ws-responsive-table__overlay\");\r\n\r\n // Must ignore any cloned popover buttons from tab order to prevent repeated navigation,\r\n // but removing from layout causes mismatched row heights between overlay.\r\n $(this).find('button[data-ws-toggle=\"popover\"]').attr(\"tabindex\", \"-1\");\r\n $(this).find('button[data-ws-toggle=\"popover\"]').css(\"visibility\", \"hidden\");\r\n\r\n // ADA - Prevent duplicate IDs from cloned table row headers\r\n $(this).find(\".ws-comparison-table__item-description\").removeAttr(\"id\");\r\n\r\n $(\".ws-responsive-table__content--clone\").append(overlay);\r\n });\r\n\r\n initAllComparisonTablesUI();\r\n\r\n var $footables = $(\".footable\");\r\n\r\n $footables.filter(\":not(.lazyload)\").each((i, el) => initializeFootableWhenKnockoutReady($(el)));\r\n\r\n $(document).on(\"ready.ft.table\", \".footable\", function (e, ft) {\r\n ft.$el.data(\"ws-footable-load-state\", \"loaded\");\r\n\r\n setTimeout(function () {\r\n // some tables have height explicitly set while loading to avoid page jump, this removes that once loaded so it can adjust to the content\r\n ft.$el.parents(\".ws-data-table--footable-height-preset\").css(\"height\", \"\");\r\n }, 50);\r\n\r\n if (ft.$el.hasClass(\"ws-responsive-table__table\")) {\r\n setTimeout(function () {\r\n var $el = ft.$el.parents(responsiveTableSectionItemSelector);\r\n if ($el.length) {\r\n $el.toggleClass(\"ws-footable--loaded\", true);\r\n initComparisonTableUI($el[0]);\r\n }\r\n }, 100);\r\n }\r\n });\r\n\r\n $(document).on(\"click\", \".footable-sortable .ws-data-table__heading-content--sortable\", function (event) {\r\n focusElement = event.target;\r\n });\r\n\r\n $(document).on(\"before.ft.sorting\", \".footable\", function (e, ft, sorter) {\r\n if (!sortInProgress) {\r\n sortInProgress = true;\r\n\r\n var altTarget = ft.$el.hasClass(\"ws-responsive-table__table\") ? \".ws-responsive-table__overlay\" : ft.$el.hasClass(\"ws-responsive-table__overlay\") ? \".ws-responsive-table__table\" : \"\";\r\n if (altTarget) {\r\n // trigger sort on the alt table so the rows stay in sync\r\n var $altTable = ft.$el.parents(responsiveTableSectionItemSelector).find(altTarget);\r\n if ($altTable.length) {\r\n var altFt = FooTable.get($altTable);\r\n altFt.components.forEach(function (component) {\r\n if (typeof component.sort === \"function\") {\r\n component.sort(sorter.column.index, sorter.direction);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n $(document).on(\"after.ft.sorting\", \".footable\", function (e, ft, sorter) {\r\n sortInProgress = false;\r\n\r\n if (focusElement) {\r\n $(focusElement).focus();\r\n }\r\n });\r\n\r\n $(document).on(\"ready.ft.table after.ft.sorting\", \".footable\", function (event) {\r\n var $ascHeadings = $(ascHeadingSelector);\r\n var $descHeadings = $(descHeadingSelector);\r\n var $unsortedHeadings = $(unsortedHeadingSelector);\r\n\r\n // Toggle heading sort icons from DESC to ASC\r\n $ascHeadings.parent().attr(\"aria-sort\", \"ascending\");\r\n $ascHeadings.children(headingSortIconSelector).each(function () {\r\n var $icon = $(this);\r\n\r\n if (\r\n (event.target.className.indexOf(\"ws-fund-overview__data-table--performance\") !== -1) ||\r\n (event.target.className.indexOf(\"ws-fund-overview__data-table--morningstar\") !== -1)\r\n ) {\r\n // Solid & Light icons for Overview tables\r\n $icon.removeClass(unsortedIconClass).removeClass(sortAlphaDownIconClass).removeClass(sortNumericDownIconClass);\r\n $icon.addClass(function (index, currentClassName) {\r\n return (currentClassName.indexOf(headingSortNumericIconClass) !== -1) ? sortNumericUpIconClass : sortAlphaUpIconClass;\r\n });\r\n }\r\n else {\r\n // Solid icons for standard (light theme) tables\r\n $icon.removeClass(unsortedIconClass).removeClass(sortAlphaDownSolidIconClass).removeClass(sortNumericDownSolidIconClass);\r\n $icon.addClass(function (index, currentClassName) {\r\n return (currentClassName.indexOf(headingSortNumericIconClass) !== -1) ? sortNumericUpSolidIconClass : sortAlphaUpSolidIconClass;\r\n });\r\n }\r\n });\r\n\r\n // Toggle heading sort icons from ASC to DESC\r\n $descHeadings.parent().attr(\"aria-sort\", \"descending\");\r\n $descHeadings.children(headingSortIconSelector).each(function () {\r\n var $icon = $(this);\r\n\r\n if (\r\n (event.target.className.indexOf(\"ws-fund-overview__data-table--performance\") !== -1) ||\r\n (event.target.className.indexOf(\"ws-fund-overview__data-table--morningstar\") !== -1)\r\n ) {\r\n // Solid & Light icons for Overview tables\r\n $icon.removeClass(unsortedIconClass).removeClass(sortAlphaUpIconClass).removeClass(sortNumericUpIconClass);\r\n $icon.addClass(function (index, currentClassName) {\r\n return (currentClassName.indexOf(headingSortNumericIconClass) !== -1) ? sortNumericDownIconClass : sortAlphaDownIconClass;\r\n });\r\n }\r\n else {\r\n // Solid icons for standard (light theme) tables\r\n $icon.removeClass(unsortedIconClass).removeClass(sortAlphaUpSolidIconClass).removeClass(sortNumericUpSolidIconClass);\r\n $icon.addClass(function (index, currentClassName) {\r\n return (currentClassName.indexOf(headingSortNumericIconClass) !== -1) ? sortNumericDownSolidIconClass : sortAlphaDownSolidIconClass;\r\n });\r\n }\r\n });\r\n\r\n // Toggle default heading sort icons\r\n $unsortedHeadings.parent().attr(\"aria-sort\", \"none\");\r\n $unsortedHeadings.children(headingSortIconSelector).removeClass(allSortedIcons).addClass(unsortedIconClass);\r\n });\r\n\r\n // if footable sortable column keypress is an enter or space, then click the same target (since footable sorting only seems to respond to click events)\r\n $(\".footable-sortable, .ws-data-table__heading-content--sortable\").keypress(WS.Tables.EventHandlers.keypress);\r\n\r\n // this gets around an issue with footable where clicking on an element within a td (such as a span) will not trigger the click handler that expands detail rows in mobile\r\n $(document).on(\"click\", \".footable > tbody > tr:not(.footable-detail-row) > td > *\", function (e) {\r\n // if the user is clicking on a popover, allow the default functionality to occur rather than expanding the detail rows instead\r\n if (e.target.dataset[\"toggle\"] === \"popover\") {\r\n return;\r\n }\r\n\r\n // Prevent links or icon-links from behaving like toggles\r\n var $target = $(e.target);\r\n if ($target.is('a') || (($target.is('i') || $target.is('span')) && $target.parents('a').length)) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n $(this).parent().click();\r\n });\r\n\r\n if (!WS.isExperienceEditor()) {\r\n $(\"[class*='ws-rte-responsive-table']\").each(function () {\r\n var $this = $(this),\r\n $cols = $this.find(\"tr\").first().children(\"th, td\");\r\n\r\n // for each authored footable, set the first column to remain visible at the\r\n // xs breakpoint while collapsing the rest of the columns. assumes no colspans\r\n // are used on the table\r\n $this.footable({\r\n \"columns\": $cols.map(function (index) {\r\n return index === 0 ? {} : { \"breakpoints\": \"xs\" };\r\n }).get(),\r\n \"empty\": \"\"\r\n });\r\n });\r\n }\r\n\r\n $(window).resize(_throttle(() => {\r\n headerHeight = WS.getFixedElementsHeight();\r\n updateAllComparisonTablesUI();\r\n }, 100));\r\n\r\n document.addEventListener('scroll', _throttle(updateAllColumnHeaders, 50));\r\n\r\n $(\".ws-responsive-table__content\").scroll(function () {\r\n updateArrows($(this).parents(responsiveTableSectionItemSelector));\r\n });\r\n\r\n $(document).on(\"swipeleft\", responsiveTableSectionItemSelector, function (e) {\r\n onColumnNavigation($(this), \"right\");\r\n });\r\n\r\n $(document).on(\"swiperight\", responsiveTableSectionItemSelector, function (e) {\r\n onColumnNavigation($(this), \"left\");\r\n });\r\n\r\n $(responsiveTableLeftButtonSelector).click(function () {\r\n onColumnNavigation($(this).parents(responsiveTableSectionItemSelector), \"left\");\r\n });\r\n\r\n $(responsiveTableRightButtonSelector).click(function () {\r\n onColumnNavigation($(this).parents(responsiveTableSectionItemSelector), \"right\");\r\n });\r\n\r\n $(document).on('lazyloaded', '.footable', function (e) {\r\n if (e.currentTarget === e.target) {\r\n initializeFootableWhenKnockoutReady($(e.target));\r\n }\r\n });\r\n\r\n function initAllComparisonTablesUI() {\r\n $(responsiveTableSectionItemSelector + \":not(.lazyload)\").each(function (index, el) {\r\n initComparisonTableUI(el);\r\n });\r\n }\r\n\r\n function initComparisonTableUI(el) {\r\n updateComparisonTableUI(el);\r\n onColumnNavigation($(el));\r\n $(el).find(\".ws-responsive-table__overlay th:first\").addClass(responsiveTableColumnVisibleClass);\r\n }\r\n\r\n function updateAllComparisonTablesUI() {\r\n $(responsiveTableSectionItemSelector + \":not(.lazyload)\").each(function (index, el) {\r\n updateComparisonTableUI(el);\r\n });\r\n }\r\n\r\n function updateComparisonTableUI(el) {\r\n var $el = $(el);\r\n var $content = $el.find(\".ws-responsive-table__content\");\r\n var $tables = $el.find(\".ws-responsive-table__table,.ws-responsive-table__overlay\");\r\n if (!$tables.length) return;\r\n\r\n $tables.each(function (index, tableEl) {\r\n let tableOpts = $el.data(\"ws-responsive-table-opts\") || defaultTableOptions;\r\n $el.data(\"ws-col-animation-duration\", tableOpts.columnNavigationAnimationDuration);\r\n updateTableWidth($(tableEl), tableOpts);\r\n });\r\n\r\n if ($tables[0].scrollWidth <= $content.innerWidth()) {\r\n $el.find(responsiveTableLeftButtonSelector).toggleClass(responsiveTableButtonHiddenClass, true);\r\n $el.find(responsiveTableRightButtonSelector).toggleClass(responsiveTableButtonHiddenClass, true);\r\n setTableMargin($tables, 0);\r\n $tables.find(\".ws-data-table__heading-content\").toggleClass(responsiveTableColumnPaddingLeftClass, false).toggleClass(responsiveTableColumnPaddingRightClass, false);\r\n } else {\r\n var columnHeight = (Modernizr.mq(mediumMq) ? $tables.find(\"thead tr td .ws-data-table__heading-content\").outerHeight() : 0)\r\n + $tables.find(\"thead tr th .ws-data-table__heading-content\").outerHeight()\r\n - 57;\r\n\r\n var paddingLeft = $tables.find(\"th:first\").outerWidth() + \"px\";\r\n var top = headerHeight + columnHeight + \"px\";\r\n\r\n var $arrowDiv = $el.find(\".ws-btn-group--comparison-table\");\r\n $arrowDiv.css({ \"padding-left\": paddingLeft });\r\n $arrowDiv.find(\".ws-btn--comparison-table_left, .ws-btn--comparison-table_right\").css({ \"top\": top });\r\n\r\n onColumnNavigation($el);\r\n }\r\n }\r\n\r\n function setTableMargin($table, marginLeft) {\r\n var marginLeftRounded = Math.round(marginLeft);\r\n $table.data(\"marginLeft\", marginLeftRounded);\r\n $table.css({ \"margin-left\": marginLeftRounded });\r\n }\r\n\r\n function updateTableWidth($table, tableOptions) {\r\n if (!$table.length) return;\r\n\r\n var largeNonStaticCols = tableOptions.breakpoints.large.cols;\r\n var mediumNonStaticCols = tableOptions.breakpoints.medium.cols;\r\n var smallNonStaticCols = tableOptions.breakpoints.small.cols;\r\n var xsNonStaticCols = tableOptions.breakpoints.extraSmall.cols;\r\n var mediumFirstColWidth = tableOptions.breakpoints.medium.firstColumnWidthPct;\r\n var smallFirstColWidth = tableOptions.breakpoints.small.firstColumnWidthPct;\r\n var xsFirstColWidth = tableOptions.breakpoints.extraSmall.firstColumnWidthPct;\r\n\r\n var numCols = 0;\r\n var $tr = $table.find('thead tr');\r\n if (!$tr.length) return;\r\n\r\n $tr.each(function (index, tr) {\r\n if (tr.cells.length > numCols) {\r\n numCols = tr.cells.length;\r\n }\r\n });\r\n\r\n var nonStaticCols = numCols - 1;\r\n\r\n\r\n var isLarge = Modernizr.mq(largeMq);\r\n var isMedium = Modernizr.mq(mediumMq);\r\n var isSmall = Modernizr.mq(smallMq);\r\n\r\n var tablePercentWidth;\r\n\r\n if (isLarge) {\r\n tablePercentWidth = 100;\r\n $table.data(\"active-cols\", largeNonStaticCols);\r\n } else if (isMedium && nonStaticCols >= mediumNonStaticCols) {\r\n tablePercentWidth = 100 + (nonStaticCols - mediumNonStaticCols) * ((100 - mediumFirstColWidth) / mediumNonStaticCols);\r\n $table.data(\"active-cols\", mediumNonStaticCols);\r\n } else if (isSmall && nonStaticCols >= smallNonStaticCols) {\r\n tablePercentWidth = 100 + (nonStaticCols - smallNonStaticCols) * ((100 - smallFirstColWidth) / smallNonStaticCols);\r\n $table.data(\"active-cols\", smallNonStaticCols);\r\n } else if (!isSmall && nonStaticCols >= xsNonStaticCols) {\r\n tablePercentWidth = 100 + (nonStaticCols - xsNonStaticCols) * ((100 - xsFirstColWidth) / xsNonStaticCols);\r\n $table.data(\"active-cols\", xsNonStaticCols);\r\n } else {\r\n tablePercentWidth = 100;\r\n }\r\n\r\n $table.css({\r\n \"width\": tablePercentWidth + \"%\",\r\n \"tableLayout\": \"fixed\"\r\n });\r\n }\r\n\r\n function updateArrows($el) {\r\n var $tableContent = $el.find(\".ws-responsive-table__content\");\r\n var $table = $tableContent.find(\".ws-responsive-table__table\");\r\n var currentScrollValue = $table.data('marginLeft') || 0;\r\n var maxScrollLeft = $table.innerWidth() - $tableContent.innerWidth() + currentScrollValue;\r\n if (Math.abs(currentScrollValue) <= 1) {\r\n if (maxScrollLeft < 1) {\r\n $el.find(responsiveTableLeftButtonSelector).toggleClass(responsiveTableButtonHiddenClass, true);\r\n $el.find(responsiveTableRightButtonSelector).toggleClass(responsiveTableButtonHiddenClass, true);\r\n setTableMargin($table, 0);\r\n } else {\r\n $el.find(responsiveTableLeftButtonSelector).toggleClass(responsiveTableButtonHiddenClass, true);\r\n $el.find(responsiveTableRightButtonSelector).toggleClass(responsiveTableButtonHiddenClass, false);\r\n }\r\n } else if (maxScrollLeft < 1) {\r\n $el.find(responsiveTableLeftButtonSelector).toggleClass(responsiveTableButtonHiddenClass, false);\r\n $el.find(responsiveTableRightButtonSelector).toggleClass(responsiveTableButtonHiddenClass, true);\r\n setTableMargin($table, 0 - ($table.innerWidth() - $tableContent.innerWidth()));\r\n } else {\r\n $el.find(responsiveTableLeftButtonSelector).toggleClass(responsiveTableButtonHiddenClass, false);\r\n $el.find(responsiveTableRightButtonSelector).toggleClass(responsiveTableButtonHiddenClass, false);\r\n }\r\n }\r\n\r\n function updateAllColumnHeaders() {\r\n $(responsiveTableSectionItemSelector).each(function (index, element) {\r\n updateColumnHeaders($(element));\r\n });\r\n }\r\n\r\n function updateColumnHeaders($el) {\r\n var isFixed = $el.hasClass(responsiveTableSectionItemFixedHeadersClass);\r\n var $table = $el.find(\".ws-responsive-table\");\r\n var $thead = $el.find(\"thead\");\r\n var theadHeight;\r\n\r\n if (isFixed) {\r\n theadHeight = $thead.data(\"ws-thead-height\") || 99;\r\n } else {\r\n theadHeight = $thead.outerHeight();\r\n $thead.data(\"ws-thead-height\", theadHeight);\r\n }\r\n\r\n var theadTop = $thead.offset().top - (isFixed ? theadHeight : 0);\r\n var tableHeight = $table.outerHeight();\r\n var top = $table.offset().top;\r\n var bottom = top + tableHeight - headerHeight - theadHeight;\r\n\r\n // only stick the column headers if the table is taller than the visible space in the viewport (this also prevents the headers from sticking while footable/knockout are loading)\r\n var shouldBeFixed =\r\n (tableHeight > window.innerHeight - headerHeight - theadHeight * (isFixed ? 3 : 2)) &&\r\n (window.pageYOffset >= theadTop - headerHeight) &&\r\n (window.pageYOffset < bottom);\r\n\r\n if (isFixed !== shouldBeFixed) {\r\n $el.toggleClass(responsiveTableSectionItemFixedHeadersClass, shouldBeFixed);\r\n $body.css({ \"margin-top\": shouldBeFixed ? theadHeight : \"\" }); // adding margin-top to the body equal to the fixed element height prevents the page from jumping\r\n }\r\n }\r\n\r\n function onColumnNavigation($sectionItem, direction) {\r\n var $tableContent = $sectionItem.find('.ws-responsive-table__content');\r\n var $table = $tableContent.find(\".ws-responsive-table__table\");\r\n var scrollBy = $tableContent.find(\".ws-comparison-table th:nth-child(2), .ws-data-table__table--layout_responsive th:nth-child(2)\").outerWidth();\r\n var marginLeft = $table.data('marginLeft') || 0;\r\n\r\n var columnShiftCount = Math.round((0 - marginLeft) / scrollBy);\r\n\r\n if (direction === \"left\") {\r\n columnShiftCount--;\r\n } else if (direction === \"right\") {\r\n columnShiftCount++;\r\n }\r\n\r\n marginLeft = 0 - columnShiftCount * scrollBy;\r\n\r\n var $nonStaticCols = $table.find(\"thead th:not(:first-child)\");\r\n var $nonStaticColsContent = $nonStaticCols.find(\".ws-data-table__heading-content\");\r\n var activeCols = $table.data(\"active-cols\") || $nonStaticCols.length;\r\n\r\n // do not navigate if it would cause us to navigate past the beginning or end of the table\r\n if (columnShiftCount >= 0 && columnShiftCount + activeCols <= $nonStaticCols.length) {\r\n $table.data('marginLeft', marginLeft);\r\n\r\n // add the visible class to the visible columns so that click events are only registered on them and not the hidden columns out of bounds\r\n var $visibleCols = $nonStaticCols.slice(columnShiftCount, columnShiftCount + activeCols);\r\n $nonStaticCols.not($visibleCols).removeClass(responsiveTableColumnVisibleClass);\r\n $visibleCols.addClass(responsiveTableColumnVisibleClass);\r\n\r\n $table.find(`tbody td:nth-child(${columnShiftCount + 1})`).removeClass(responsiveTableCellVisbleClass);\r\n $table.find(`tbody td:nth-child(-n+${columnShiftCount + activeCols + 2})`).removeClass(responsiveTableCellVisbleClass);\r\n $table.find(`tbody td:nth-child(n+${columnShiftCount + 2}):nth-child(-n+${columnShiftCount + activeCols + 1})`).addClass(responsiveTableCellVisbleClass);\r\n\r\n if ($nonStaticColsContent.length) {\r\n $nonStaticColsContent.toggleClass(responsiveTableColumnPaddingLeftClass, false).toggleClass(responsiveTableColumnPaddingRightClass, false);\r\n\r\n if (columnShiftCount > 0 && columnShiftCount < $nonStaticCols.length) {\r\n $nonStaticColsContent.get(columnShiftCount).classList.add(responsiveTableColumnPaddingRightClass);\r\n }\r\n\r\n if (columnShiftCount + activeCols < $nonStaticCols.length) {\r\n $nonStaticColsContent.get(columnShiftCount + activeCols - 1).classList.add(responsiveTableColumnPaddingLeftClass);\r\n }\r\n }\r\n\r\n // only animate the change if the user clicked the nav buttons, otherwise change the margin immediately as this is likely due to a window resize\r\n if (direction) {\r\n $table.animate({ marginLeft: marginLeft }, $sectionItem.data(\"ws-col-animation-duration\"), 'swing', function () {\r\n updateArrows($sectionItem);\r\n });\r\n } else {\r\n $table.css({ \"margin-left\": marginLeft });\r\n updateArrows($sectionItem);\r\n }\r\n } else if (columnShiftCount < 0) {\r\n $table.css({ \"margin-left\": 0 });\r\n updateArrows($sectionItem);\r\n } else {\r\n $table.css({ \"margin-left\": 0 - ($nonStaticCols.length - activeCols) * scrollBy });\r\n updateArrows($sectionItem);\r\n }\r\n }\r\n\r\n function initializeFootableWhenKnockoutReady($footable) {\r\n const $dataTable = $footable.parents(\".ws-data-table\").first();\r\n\r\n // footables with data bound with knockout should have the ws-data-table--knockout class, which allows us to ensure knockout has finished binding before initializing footable. \r\n // If knockout binding occurs during footable initialization, it can result in an empty table.\r\n if ($dataTable.hasClass(\"ws-data-table--knockout\") && !ko.dataFor($dataTable[0])) {\r\n let waitForKnockoutLoading = setInterval(function () {\r\n if (!!ko.dataFor($dataTable[0])) {\r\n initializeFootable($footable);\r\n clearInterval(waitForKnockoutLoading);\r\n }\r\n }, 100);\r\n } else {\r\n initializeFootable($footable);\r\n }\r\n }\r\n\r\n function initializeFootable($footable) {\r\n let loadState = $footable.data(\"ws-footable-load-state\");\r\n if (loadState === \"loading\" || loadState === \"loaded\") {\r\n console.error(`footable already in ${loadState} state, aborting init...`);\r\n return;\r\n }\r\n\r\n $footable.data(\"ws-footable-load-state\", \"loading\");\r\n\r\n var rows = null;\r\n\r\n // lazy-loaded footables can have their rows dynamically loaded from json in a data attribute, using the first table row as a template\r\n var tableData = $footable.data('ws-lazyload-footable-data');\r\n\r\n if (tableData && tableData.length) {\r\n var $templateRow = $footable.find('tbody tr:first-child');\r\n\r\n if ($templateRow.length) {\r\n // placeholders in the template row (in the form of \"{propertyName}\" are replaced with the values in the json data\r\n rows = [];\r\n var searchKeys = [];\r\n Object.keys(tableData[0]).forEach(key => searchKeys.push(new RegExp(`{${key}}`, 'g')));\r\n var templateHtml = $templateRow[0].outerHTML;\r\n\r\n for (var i = 0; i < tableData.length; i++) {\r\n var rowHtml = templateHtml;\r\n\r\n Object.keys(tableData[i]).forEach((key, index) => {\r\n rowHtml = rowHtml.replace(searchKeys[index], tableData[i][key]);\r\n });\r\n\r\n rows.push($(rowHtml));\r\n }\r\n }\r\n }\r\n\r\n // if rows is null or empty, the table will be initialized with its existing table rows\r\n $footable.footable({\r\n columns: $footable.find('thead th'),\r\n rows: rows\r\n });\r\n }\r\n\r\n exports.initializeFootableWhenKnockoutReady = initializeFootableWhenKnockoutReady;\r\n exports.initComparisonTableUI = initComparisonTableUI;\r\n});\r\n"],"names":["require","$","WS","Modernizr","_throttle","ko","focusElement","mediumMq","defaultTableOptions","columnNavigationAnimationDuration","breakpoints","large","cols","firstColumnWidthPct","medium","small","extraSmall","$body","responsiveTableSectionItemSelector","responsiveTableLeftButtonSelector","responsiveTableRightButtonSelector","responsiveTableButtonHiddenClass","responsiveTableSectionItemFixedHeadersClass","responsiveTableColumnPaddingLeftClass","responsiveTableColumnPaddingRightClass","responsiveTableColumnVisibleClass","responsiveTableCellVisbleClass","headingSortIconSelector","headingSortNumericIconClass","unsortedIconClass","sortAlphaUpSolidIconClass","sortAlphaDownSolidIconClass","sortNumericUpSolidIconClass","sortNumericDownSolidIconClass","sortAlphaUpIconClass","sortAlphaDownIconClass","sortNumericUpIconClass","sortNumericDownIconClass","allSortedIcons","sortInProgress","headerHeight","getFixedElementsHeight","initComparisonTableUI","el","updateComparisonTableUI","onColumnNavigation","find","addClass","$el","$content","$tables","length","each","index","tableEl","tableOpts","data","$table","tableOptions","largeNonStaticCols","mediumNonStaticCols","smallNonStaticCols","xsNonStaticCols","mediumFirstColWidth","smallFirstColWidth","xsFirstColWidth","numCols","$tr","tr","cells","tablePercentWidth","nonStaticCols","isLarge","mq","isMedium","isSmall","css","updateTableWidth","scrollWidth","innerWidth","toggleClass","setTableMargin","columnHeight","outerHeight","paddingLeft","outerWidth","top","$arrowDiv","marginLeft","marginLeftRounded","Math","round","updateArrows","$tableContent","currentScrollValue","maxScrollLeft","abs","$sectionItem","direction","scrollBy","columnShiftCount","$nonStaticCols","$nonStaticColsContent","activeCols","$visibleCols","slice","not","removeClass","concat","get","classList","add","animate","initializeFootableWhenKnockoutReady","$footable","$dataTable","parents","first","hasClass","dataFor","waitForKnockoutLoading","setInterval","initializeFootable","clearInterval","loadState","rows","tableData","$templateRow","searchKeys","Object","keys","forEach","key","push","RegExp","templateHtml","outerHTML","i","rowHtml","replace","footable","columns","console","error","Tables","Parsers","percentageParser","valueOrElement","FooTable","is","element","thisParserData","this","parser","numericValue","starParser","starMatches","match","EventHandlers","keypress","event","keyCode","which","preventDefault","target","click","setTimeout","e","jQuery","Event","trigger","overlay","clone","attr","removeAttr","append","filter","document","on","ft","sorter","altTarget","$altTable","components","component","sort","column","focus","$ascHeadings","$descHeadings","$unsortedHeadings","parent","children","$icon","className","indexOf","currentClassName","dataset","$target","isExperienceEditor","$this","$cols","map","window","resize","addEventListener","theadHeight","isFixed","$thead","theadTop","offset","tableHeight","bottom","shouldBeFixed","innerHeight","pageYOffset","updateColumnHeaders","scroll","currentTarget","exports"],"sourceRoot":""}