{"version":3,"file":"panel.js","sources":["../../../Framework/Controls/panel.ts"],"sourcesContent":["// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\nimport { computed, defineComponent, nextTick, PropType, ref, watch } from \"vue\";\r\nimport { useVModelPassthrough } from \"@Obsidian/Utility/component\";\r\nimport RockButton from \"./rockButton\";\r\nimport Fullscreen from \"./fullscreen\";\r\nimport TransitionVerticalCollapse from \"./transitionVerticalCollapse\";\r\nimport { PanelAction } from \"@Obsidian/Types/Controls/panelAction\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ndeclare function $(element: any): any;\r\n\r\nexport default defineComponent({\r\n name: \"Panel\",\r\n\r\n components: {\r\n Fullscreen,\r\n RockButton,\r\n TransitionVerticalCollapse\r\n },\r\n\r\n // We manually bind the attributes to a child element.\r\n inheritAttrs: false,\r\n\r\n props: {\r\n /** True if the panel content is shown when hasCollapse is also true. */\r\n modelValue: {\r\n type: Boolean as PropType,\r\n default: false\r\n },\r\n\r\n /** True if the draw should be open and its content displayed. */\r\n isDrawerOpen: {\r\n type: Boolean as PropType,\r\n default: false\r\n },\r\n\r\n /** True if the panel should be in full screen mode. */\r\n isFullscreen: {\r\n type: Boolean as PropType,\r\n default: false\r\n },\r\n\r\n /** True if the panel is collapsable and shows the collapse button. */\r\n hasCollapse: {\r\n type: Boolean as PropType,\r\n default: false\r\n },\r\n\r\n /**\r\n * True if the panel will show a control in the header that allows\r\n * the individual to change the zoom of the panel body.\r\n */\r\n hasZoom: {\r\n type: Boolean as PropType,\r\n default: false\r\n },\r\n\r\n /** True if the panel can go into full screen mode. */\r\n hasFullscreen: {\r\n type: Boolean as PropType,\r\n default: false\r\n },\r\n\r\n /** True if the panel should use in-page full screen mode. */\r\n isFullscreenPageOnly: {\r\n type: Boolean as PropType,\r\n default: false\r\n },\r\n\r\n /** The type of panel to render. */\r\n type: {\r\n type: String as PropType<\"default\" | \"block\" | \"default\" | \"primary\" | \"success\" | \"info\" | \"warning\" | \"danger\">,\r\n default: \"default\"\r\n },\r\n\r\n /** The title text to display in the panel, will be overridden by slot usage. */\r\n title: {\r\n type: String as PropType,\r\n default: \"\"\r\n },\r\n\r\n /** The Icon CSS class to display in the title, will be overridden by slot usage. */\r\n titleIconCssClass: {\r\n type: String as PropType,\r\n default: \"\"\r\n },\r\n\r\n /** A list of action items to be included in the ellipsis. */\r\n headerSecondaryActions: {\r\n type: Array as PropType,\r\n required: false\r\n }\r\n },\r\n\r\n emits: [\r\n \"update:modelValue\",\r\n \"update:isDrawerOpen\",\r\n \"update:isFullscreen\"\r\n ],\r\n\r\n setup(props, { emit }) {\r\n /** The internal state of the collapsable panel content. */\r\n const internalValue = useVModelPassthrough(props, \"modelValue\", emit);\r\n\r\n /** True if the draw content should be shown. */\r\n const isDrawerOpen = useVModelPassthrough(props, \"isDrawerOpen\", emit);\r\n\r\n /** True if the panel should be shown in full screen mode. */\r\n const isFullscreen = useVModelPassthrough(props, \"isFullscreen\", emit);\r\n\r\n /** The HTML Element that is the main panel div. */\r\n const panelElement = ref(null);\r\n\r\n /** True if the collapse action should be shown. */\r\n const hasCollapseAction = computed((): boolean => props.hasCollapse && !isFullscreen.value);\r\n\r\n const hasHeaderSecondaryActions = computed((): boolean => !!props.headerSecondaryActions && props.headerSecondaryActions.length > 0);\r\n const isHelpOpen = ref(false);\r\n const headerSecondaryActionMenu = ref(null);\r\n\r\n const isZoomActive = ref(false);\r\n const zoomValue = ref(100);\r\n const isZoomSupported = !/Firefox\\/([0-9.]+)(?:\\s|$)/.test(navigator.userAgent)\r\n && !/FxiOS\\/([0-9.]+)/.test(navigator.userAgent);\r\n\r\n /** The CSS class names to be applied to the panel. */\r\n const panelClass = computed((): string[] => {\r\n const classes = [\"panel\", \"panel-flex\"];\r\n\r\n classes.push(`panel-${props.type}`);\r\n\r\n if (isFullscreen.value) {\r\n classes.push(\"panel-fullscreen\");\r\n }\r\n\r\n return classes;\r\n });\r\n\r\n /** The CSS class names to be applied to the panel heading. */\r\n const panelHeadingClass = computed((): string[] => {\r\n const classes = [\"panel-heading\"];\r\n\r\n if (props.hasCollapse) {\r\n classes.push(\"cursor-pointer\");\r\n }\r\n\r\n return classes;\r\n });\r\n\r\n /** The style attribute values to apply to the panel-body. */\r\n const panelBodyStyle = computed((): Record => {\r\n const styles: Record = {};\r\n\r\n if (props.hasZoom && isZoomActive.value) {\r\n styles[\"zoom\"] = `${zoomValue.value}%`;\r\n }\r\n\r\n return styles;\r\n });\r\n\r\n /** The tab index for the panel, this allows us to catch the escape key. */\r\n const panelTabIndex = computed((): string | undefined => isFullscreen.value ? \"0\" : undefined);\r\n\r\n /** True if the panel body should be displayed. */\r\n const isPanelOpen = computed((): boolean => !props.hasCollapse || internalValue.value !== false || isFullscreen.value);\r\n\r\n const getHeaderSecondaryActionIconClass = (action: PanelAction): string => {\r\n if (action.iconCssClass) {\r\n let iconClass = action.iconCssClass;\r\n\r\n if (action.type !== \"default\" && action.type !== \"link\") {\r\n iconClass += ` text-${action.type}`;\r\n }\r\n\r\n return iconClass;\r\n }\r\n else {\r\n return \"\";\r\n }\r\n };\r\n\r\n const getHeaderSecondaryActionItemClass = (action: PanelAction): string => {\r\n return action.disabled ? \"disabled\" : \"\";\r\n };\r\n\r\n const onIgnoreClick = (): void => { /* Intentionally blank to ignore click. */ };\r\n\r\n /** Event handler when the drawer expander is clicked. */\r\n const onDrawerPullClick = (): void => {\r\n isDrawerOpen.value = !isDrawerOpen.value;\r\n };\r\n\r\n const onHelpClick = (): void => {\r\n isHelpOpen.value = !isHelpOpen.value;\r\n };\r\n\r\n /** Event handler when the panel heading is clicked. */\r\n const onPanelHeadingClick = (): void => {\r\n if (props.hasCollapse) {\r\n internalValue.value = !isPanelOpen.value;\r\n }\r\n };\r\n\r\n const onPanelExpandClick = (): void => {\r\n if (props.hasCollapse) {\r\n internalValue.value = !isPanelOpen.value;\r\n }\r\n };\r\n\r\n /**\r\n * Event handler for when a key is pressed down inside the panel.\r\n *\r\n * @param ev The event that describes which key was pressed.\r\n */\r\n const onPanelKeyDown = (ev: KeyboardEvent): void => {\r\n if (isFullscreen.value && ev.keyCode === 27) {\r\n ev.stopImmediatePropagation();\r\n\r\n isFullscreen.value = false;\r\n }\r\n };\r\n\r\n /** Event handler when the full-screen button is clicked. */\r\n const onFullscreenClick = (): void => {\r\n if (props.hasFullscreen) {\r\n isFullscreen.value = !isFullscreen.value;\r\n }\r\n };\r\n\r\n /** Event handler for when a secondary action is clicked. */\r\n const onActionClick = (action: PanelAction, event: Event): void => {\r\n if (action.disabled) {\r\n return;\r\n }\r\n\r\n // Close the drop down since we are hijacking the click event.\r\n if (headerSecondaryActionMenu.value) {\r\n $(headerSecondaryActionMenu.value).dropdown(\"toggle\");\r\n }\r\n\r\n if (action.handler) {\r\n action.handler(event);\r\n }\r\n };\r\n\r\n /** Event handler for when the zoom action is clicked. */\r\n function onZoomClick(): void {\r\n isZoomActive.value = !isZoomActive.value;\r\n }\r\n\r\n /** Event handler for when the increase zoom button is clicked. */\r\n function onZoomIncreaseClick(): void {\r\n if (zoomValue.value < 400) {\r\n zoomValue.value += 25;\r\n }\r\n }\r\n\r\n /** Event handler for when the decrease zoom button is clicked. */\r\n function onZoomDecreaseClick(): void {\r\n if (zoomValue.value > 25) {\r\n zoomValue.value -= 25;\r\n }\r\n }\r\n\r\n // Watches for changes to our full screen status and responds accordingly.\r\n watch(isFullscreen, () => {\r\n // If we have entered full screen then wait for the UI to update\r\n // and set focus on the panel. This allows the escape key to work.\r\n if (isFullscreen.value) {\r\n nextTick(() => panelElement.value?.focus());\r\n }\r\n });\r\n\r\n watch(headerSecondaryActionMenu, () => {\r\n if (headerSecondaryActionMenu.value) {\r\n $(headerSecondaryActionMenu.value).dropdown();\r\n }\r\n });\r\n\r\n return {\r\n getHeaderSecondaryActionIconClass,\r\n getHeaderSecondaryActionItemClass,\r\n hasCollapseAction,\r\n hasHeaderSecondaryActions,\r\n headerSecondaryActionMenu,\r\n isDrawerOpen,\r\n isFullscreen,\r\n isHelpOpen,\r\n isPanelOpen,\r\n isZoomActive,\r\n isZoomSupported,\r\n onActionClick,\r\n onDrawerPullClick,\r\n onFullscreenClick,\r\n onHelpClick,\r\n onIgnoreClick,\r\n onPanelExpandClick,\r\n onPanelHeadingClick,\r\n onPanelKeyDown,\r\n onZoomClick,\r\n onZoomDecreaseClick,\r\n onZoomIncreaseClick,\r\n panelBodyStyle,\r\n panelClass,\r\n panelElement,\r\n panelHeadingClass,\r\n panelTabIndex,\r\n zoomValue\r\n };\r\n },\r\n\r\n template: `\r\n\r\n
\r\n\r\n
\r\n

\r\n \r\n \r\n

\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n`\r\n});\r\n"],"names":["defineComponent","name","components","Fullscreen","RockButton","TransitionVerticalCollapse","inheritAttrs","props","modelValue","type","Boolean","default","isDrawerOpen","isFullscreen","hasCollapse","hasZoom","hasFullscreen","isFullscreenPageOnly","String","title","titleIconCssClass","headerSecondaryActions","Array","required","emits","setup","_ref","emit","internalValue","useVModelPassthrough","panelElement","ref","hasCollapseAction","computed","value","hasHeaderSecondaryActions","length","isHelpOpen","headerSecondaryActionMenu","isZoomActive","zoomValue","isZoomSupported","test","navigator","userAgent","panelClass","classes","push","concat","panelHeadingClass","panelBodyStyle","styles","panelTabIndex","undefined","isPanelOpen","getHeaderSecondaryActionIconClass","action","iconCssClass","iconClass","getHeaderSecondaryActionItemClass","disabled","onIgnoreClick","onDrawerPullClick","onHelpClick","onPanelHeadingClick","onPanelExpandClick","onPanelKeyDown","ev","keyCode","stopImmediatePropagation","onFullscreenClick","onActionClick","event","$","dropdown","handler","onZoomClick","onZoomIncreaseClick","onZoomDecreaseClick","watch","nextTick","_panelElement$value","focus","template"],"mappings":"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"}