playbook_ui 16.6.0.pre.rc.2 → 16.6.0.pre.rc.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0241a7424fee89393c3ca82262e22d714fd04ab5f2b97875c2753c5ce7718190
4
- data.tar.gz: afdc40a7c200a413984f782045860916b5b7bf9d16dfd1b66c0f5ca55281e81c
3
+ metadata.gz: 2700f3844e0cff1c23dd396c17ef2d42ae65cfff0807969712df0e384ed0d97b
4
+ data.tar.gz: ebc091e30ba73c3fe1c28018b7ee17adabed2147d0d7f8bc817494265e6b4003
5
5
  SHA512:
6
- metadata.gz: d3a2788e7b6b60d30c2e3d4bf3ff44a62b882c1ffed409d6348e332f91f644f9ef4c0f03a5d765734162d02b94d0f93a350a025818a6b4019e629ed816fe2be0
7
- data.tar.gz: 7c29e7c8ca1734cb4b04cc79cfc64e4f783837108e969bec29fd254ed355dd74786851cf40470526c7cab32503a11e7eafd01c3930e09526fd48c963c2668117
6
+ metadata.gz: 22ec2797af350cd3cb91583193a3a1d2553191fec2126c14b441053b280cfe9a29fc0e09ec7a088d94e8e04a1efa78330bd7778939251cb469aa858a80ad5bcc
7
+ data.tar.gz: 65d27862539199c110ba8d8234b8a2d71689f35d7c8f721a862aa445673a634d29ff3fba8f3a1cca137d8639357a232be3bc946ddff56c4a273be76d54448ae5
@@ -31,6 +31,7 @@
31
31
  name: object.name,
32
32
  placeholder: object.placeholder,
33
33
  required: object.required,
34
+ validation: object.validation_message.present? ? { message: object.validation_message } : {},
34
35
  }) %>
35
36
  <% end %>
36
37
  <% if object.selection_type == "quickpick" %>
@@ -0,0 +1,62 @@
1
+ import React, { useState } from "react";
2
+ import { Button, Dialog, DatePicker } from "playbook-ui";
3
+
4
+ const DatePickerDialogSubmission = () => {
5
+ const [isOpen, setIsOpen] = useState(false);
6
+ const [dateFixed, setDateFixed] = useState("");
7
+ const [pickerInstance, setPickerInstance] = useState(0);
8
+
9
+ const close = (clearDate = false) => {
10
+ if (clearDate) setDateFixed("");
11
+ setIsOpen(false);
12
+ };
13
+
14
+ const open = () => {
15
+ setPickerInstance((current) => current + 1);
16
+ setIsOpen(true);
17
+ };
18
+
19
+ const handleSubmit = () => {
20
+ if (!dateFixed.trim()) return;
21
+ close();
22
+ };
23
+
24
+ return (
25
+ <>
26
+ <Button
27
+ onClick={open}
28
+ text="Open Dialog"
29
+ />
30
+ <Dialog
31
+ onClose={() => close(true)}
32
+ opened={isOpen}
33
+ size="md"
34
+ title="Date Picker: Dialog Submission Example"
35
+ >
36
+ <Dialog.Body>
37
+ <DatePicker
38
+ defaultDate={dateFixed || undefined}
39
+ key={`fixed-${pickerInstance}`}
40
+ label="Date"
41
+ onChange={(dateStr) => setDateFixed(dateStr || "")}
42
+ pickerId={`datePickerFixed-${pickerInstance}`}
43
+ staticPosition={false}
44
+ />
45
+ </Dialog.Body>
46
+ <Dialog.Footer>
47
+ <Button
48
+ onClick={handleSubmit}
49
+ text="Submit"
50
+ />
51
+ <Button
52
+ onClick={() => close(true)}
53
+ text="Cancel"
54
+ variant="link"
55
+ />
56
+ </Dialog.Footer>
57
+ </Dialog>
58
+ </>
59
+ );
60
+ };
61
+
62
+ export default DatePickerDialogSubmission;
@@ -0,0 +1 @@
1
+ Use this pattern when a DatePicker lives inside a Dialog and needs to submit a selected value before closing. A unique `key` and `pickerId` will force the datePicker to remount each time the dialog opens.
@@ -66,3 +66,4 @@ examples:
66
66
  - date_picker_positions: Custom Positions
67
67
  - date_picker_positions_element: Custom Position (based on element)
68
68
  - date_picker_required_indicator: Required Indicator
69
+ - date_picker_dialog_submission: Dialog Form Submission
@@ -29,3 +29,4 @@ export { default as DatePickerQuickPickDefaultDate } from './_date_picker_quick_
29
29
  export { default as DatePickerRangePattern } from './_date_picker_range_pattern'
30
30
  export { default as DatePickerAndDropdownRange } from './_date_picker_and_dropdown_range.jsx'
31
31
  export { default as DatePickerRequiredIndicator } from "./_date_picker_required_indicator.jsx";
32
+ export { default as DatePickerDialogSubmission } from "./_date_picker_dialog_submission.jsx";
@@ -97,8 +97,8 @@
97
97
  }] %>
98
98
 
99
99
  <%= pb_form_with(scope: :example, method: :get, url: "", validate: true) do |form| %>
100
- <%= form.typeahead :example_typeahead_validation, props: { data: { typeahead_example2: true, user: {} }, label: true, placeholder: "Search for a user", required: true, validation: { message: "Please select a user." } } %>
101
- <%= form.typeahead :example_typeahead_validation_react, props: { options: example_typeahead_options, pills: true, label: "Example Typeahead (React Rendered)", placeholder: "Search for a user", required: true, validation: { message: "Please select a color." } } %>
100
+ <%= form.typeahead :example_typeahead_validation, props: { data: { typeahead_example2: true, user: {} }, label: true, placeholder: "Search for a user", required: true } %>
101
+ <%= form.typeahead :example_typeahead_validation_react, props: { options: example_typeahead_options, pills: true, label: "Example Typeahead (React Rendered)", placeholder: "Search for a user", required: true } %>
102
102
  <%= form.typeahead :example_typeahead_validation_react_2, props: { options: example_typeahead_options, pills: true, label: "Example Typeahead 2 (React Rendered)", placeholder: "Search for a user", required: true } %>
103
103
  <%= form.text_field :example_text_field_validation, props: { label: true, required: true } %>
104
104
  <%= form.phone_number_field :example_phone_number_field_validation, props: { label: "Example phone field", hidden_inputs: true, required: true } %>
@@ -110,14 +110,14 @@
110
110
  <%= form.text_area :example_text_area_validation, props: { label: true, required: true } %>
111
111
  <%= form.dropdown_field :example_dropdown_validation, props: { label: true, options: example_dropdown_options, required: true } %>
112
112
  <%= form.dropdown_field :example_dropdown_validation_multi, props: { label: true, options: example_dropdown_options, multi_select: true, required: true } %>
113
- <%= form.select :example_select_validation, [ ["Yes", 1], ["No", 2] ], props: { label: true, blank_selection: "Select One...", required: true, validation_message: "Please, select an option." } %>
113
+ <%= form.select :example_select_validation, [ ["Yes", 1], ["No", 2] ], props: { label: true, blank_selection: "Select One...", required: true } %>
114
114
  <%= form.collection_select :example_collection_select_validation, example_collection, :value, :name, props: { label: true, blank_selection: "Select One...", required: true } %>
115
115
  <%= form.check_box :example_checkbox_validation, props: { text: "Example Checkbox Validation", label: true, required: true }, checked_value: "1", unchecked_value: "0" %>
116
- <%= form.date_picker :example_date_picker_2, props: { label: true, required: true, validation_message: "Please, select a date.", allow_input: true } %>
116
+ <%= form.date_picker :example_date_picker_2, props: { label: true, required: true, allow_input: true } %>
117
117
  <%= form.star_rating_field :example_star_rating_validation, props: { variant: "interactive", label: true, required: true } %>
118
118
  <%= form.time_zone_select_field :example_time_zone_select, ActiveSupport::TimeZone.us_zones, { default: "Eastern Time (US & Canada)" }, props: { label: true, blank_selection: "Select a Time Zone...", required: true } %>
119
119
  <%= form.multi_level_select :example_multi_level_select, props: { id: "multi-level-select-form", tree_data: treeData, margin_bottom: "sm", required: true, label: "Example Multi Level Select field" } %>
120
- <%= form.time_picker :example_time_picker_validation, props: { label: true, required: true, validation_message: "Please select a time." } %>
120
+ <%= form.time_picker :example_time_picker_validation, props: { label: true, required: true } %>
121
121
 
122
122
  <%= form.actions do |action| %>
123
123
  <%= action.submit %>
@@ -0,0 +1,90 @@
1
+ <%
2
+ example_collection = [
3
+ OpenStruct.new(name: "Alabama", value: 1),
4
+ OpenStruct.new(name: "Alaska", value: 2),
5
+ OpenStruct.new(name: "Arizona", value: 3),
6
+ OpenStruct.new(name: "Arkansas", value: 4),
7
+ OpenStruct.new(name: "California", value: 5),
8
+ OpenStruct.new(name: "Colorado", value: 6),
9
+ OpenStruct.new(name: "Connecticut", value: 7),
10
+ OpenStruct.new(name: "Delaware", value: 8),
11
+ OpenStruct.new(name: "Florida", value: 9),
12
+ OpenStruct.new(name: "Georgia", value: 10),
13
+ ]
14
+ %>
15
+
16
+
17
+ <%
18
+ example_typeahead_options = [
19
+ { label: 'Orange', value: '#FFA500' },
20
+ { label: 'Red', value: '#FF0000' },
21
+ { label: 'Green', value: '#00FF00' },
22
+ { label: 'Blue', value: '#0000FF' },
23
+ ]
24
+ %>
25
+
26
+
27
+ <%= pb_form_with(scope: :example, method: :get, url: "", validate: true) do |form| %>
28
+ <%= form.text_field :example_text_field_validation_msg, props: { label: "Text Field With Validation Message", required: true, validation: { message: "I am a custom validation message for text field." } } %>
29
+ <%= form.typeahead :example_typeahead_validation_msg, props: { data: { typeahead_example_msg: true, user: {} }, label: "Typeahead With Validation Message", placeholder: "Search for a user", required: true, validation: { message: "I am a custom validation message for typeahead." } } %>
30
+ <%= form.typeahead :example_typeahead_validation_react_msg, props: { options: example_typeahead_options, pills: true, label: "Typeahead With Validation Message (React Rendered)", placeholder: "Search for a color", required: true, validation: { message: "I am a custom validation message for React typeahead." } } %>
31
+ <%= form.select :example_select_validation_msg, [ ["Yes", 1], ["No", 2] ], props: { label: true, blank_selection: "Select One...", required: true, validation_message: "I am a custom validation message for select." } %>
32
+ <%= form.collection_select :example_collection_select_validation_msg, example_collection, :value, :name, props: { label: "Collection Select With Validation Message", blank_selection: "Select a State...", required: true, validation_message: "I am a custom validation message for collection select." } %>
33
+ <%= form.date_picker :example_date_picker_validation_msg, props: { label: "Date Picker With Validation Message", required: true, validation_message: "I am a custom validation message for date picker.", allow_input: true } %>
34
+ <%= form.time_picker :example_time_picker_validation_msg, props: { label: "Time Picker With Validation Message", required: true, validation_message: "I am a custom validation message for time picker." } %>
35
+
36
+ <%= form.actions do |action| %>
37
+ <%= action.submit %>
38
+ <%= action.button props: { type: "reset", text: "Cancel", variant: "secondary" } %>
39
+ <% end %>
40
+ <% end %>
41
+
42
+ <!-- form.typeahead user results example template -->
43
+ <template data-typeahead-example-result-option>
44
+ <%= pb_rails("user", props: {
45
+ name: tag(:slot, name: "name"),
46
+ orientation: "horizontal",
47
+ align: "left",
48
+ avatar_url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGP6zwAAAgcBApocMXEAAAAASUVORK5CYII=",
49
+ avatar: true
50
+ }) %>
51
+ </template>
52
+
53
+ <!-- form.typeahead JS example implementation -->
54
+ <%= javascript_tag defer: "defer" do %>
55
+ document.addEventListener("pb-typeahead-kit-search", function(event) {
56
+ if (!event.target.dataset || !event.target.dataset.typeaheadExampleMsg) return
57
+
58
+ fetch(`https://api.github.com/search/users?q=${encodeURIComponent(event.detail.searchingFor)}`)
59
+ .then(response => response.json())
60
+ .then((result) => {
61
+ const resultOptionTemplate = document.querySelector("[data-typeahead-example-result-option]")
62
+
63
+ event.detail.setResults((result.items || []).map((user) => {
64
+ const wrapper = resultOptionTemplate.content.cloneNode(true)
65
+ wrapper.children[0].dataset.user = JSON.stringify(user)
66
+ wrapper.querySelector('slot[name="name"]').replaceWith(user.login)
67
+ wrapper.querySelector('img').dataset.src = user.avatar_url
68
+ return wrapper
69
+ }))
70
+ })
71
+ })
72
+
73
+
74
+ document.addEventListener("pb-typeahead-kit-result-option-selected", function(event) {
75
+ if (!event.target.dataset.typeaheadExampleMsg) return
76
+
77
+ const selectedUserJSON = event.detail.selected.firstElementChild.dataset.user
78
+ const selectedUserData = JSON.parse(selectedUserJSON)
79
+
80
+ // set the input field's value
81
+ event.target.querySelector('input[name=example_typeahead_validation_msg]').value = selectedUserData.login
82
+
83
+ // log the selected option's dataset
84
+ console.log('The selected user data:')
85
+ console.dir(selectedUserData)
86
+
87
+ // do even more with the data later - TBD
88
+ event.target.dataset.user = selectedUserJSON
89
+ })
90
+ <% end %>
@@ -0,0 +1,13 @@
1
+ Custom validation messages allow you to override the browser's default validation text with your own messaging. This provides a better user experience by giving specific, actionable feedback.
2
+
3
+ **Text-based inputs** (TextInput, Typeahead) use the `validation` prop with a `message` key:
4
+ ```ruby
5
+ validation: { message: "Please enter a valid email address." }
6
+ ```
7
+
8
+ **Selection-based inputs** (Select, DatePicker, TimePicker) use the `validation_message` prop:
9
+ ```ruby
10
+ validation_message: "Please select an option."
11
+ ```
12
+
13
+ When a required field is left empty or fails validation, your custom message will display instead of the generic browser default.
@@ -3,5 +3,6 @@ examples:
3
3
  rails:
4
4
  - form_form_with: Default
5
5
  - form_form_with_validate: Default + Validation
6
+ - form_form_with_validation_msg: Validation + Custom Validation Message
6
7
  - form_form_with_loading: Default + Loading
7
8
  - form_with_required_indicator: With Optional Required Indicator
@@ -121,4 +121,6 @@ class PbFormValidation extends PbEnhancedElement {
121
121
  }
122
122
  }
123
123
 
124
- window.PbFormValidation = PbFormValidation
124
+ window.PbFormValidation = PbFormValidation
125
+
126
+ export default PbFormValidation
@@ -43,9 +43,16 @@ module Playbook
43
43
  multiple: multiple,
44
44
  onchange: onchange,
45
45
  include_blank: include_blank,
46
+ data: validation_data,
46
47
  }.merge(attributes).merge(input_options)
47
48
  end
48
49
 
50
+ def validation_data
51
+ fields = input_options[:data] || {}
52
+ fields[:message] = validation_message unless validation_message.blank?
53
+ fields
54
+ end
55
+
49
56
  # Same resolved id as the native +<select>+ (+all_attributes[:id]+) for label +for+.
50
57
  def select_input_id
51
58
  all_attributes[:id].presence
@@ -1 +1 @@
1
- var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:true,configurable:true,writable:true,value:value}):obj[key]=value;var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!=="symbol"?key+"":key,value);import{P as PbEnhancedElement,s as stripEmojisForPaste,a as applyEmojiMask,d as debounce,b as PbPopover,e as PbTooltip,h as PbTypeahead,i as PbTable,j as PbTextarea,k as formHelper,l as datePickerHelper}from"./chunks/lib-o4u12zAw.js";import{I as INPUTMASKS}from"./chunks/_typeahead-BYUXg9ZT.js";import"./chunks/lazysizes-B7xYodB-.js";import"./playbook-rails-react-bindings.js";import"react";import"react/jsx-runtime";import"./chunks/globalProps-6Hsm3bJX.js";import"react-dom";import"react-is";import"./chunks/componentRegistry-DRSp5D_e.js";class PbKitRegistry{constructor(){this.kits=new Map;this.mutationObserver=null;this.initialized=false;this.queued=false;this.pendingMutations=[]}static getInstance(){if(!PbKitRegistry.instance){PbKitRegistry.instance=new PbKitRegistry}return PbKitRegistry.instance}register(kit){const selector=kit.selector;if(!selector){console.warn("[PbKitRegistry] Kit missing selector:",kit.name);return}const list=this.kits.get(selector)||[];list.push(kit);this.kits.set(selector,list)}start(){if(this.initialized)return;this.initialized=true;const target=document.documentElement||document;this.mutationObserver=new MutationObserver((muts=>this.onMutations(muts)));this.mutationObserver.observe(target,{childList:true,subtree:true});this.scan(document)}stop(){var _a;if(!this.initialized)return;(_a=this.mutationObserver)==null?void 0:_a.disconnect();this.mutationObserver=null;this.kits.forEach((kitsForSelector=>{kitsForSelector.forEach((kit=>{if(!kit.elements)return;const els=Array.from(kit.elements.keys());els.forEach((el=>kit.removeMatch(el)))}))}));this.pendingMutations=[];this.queued=false;this.initialized=false}onMutations(muts){this.pendingMutations.push(...muts);if(this.queued)return;this.queued=true;requestAnimationFrame((()=>{this.queued=false;const batch=this.pendingMutations;this.pendingMutations=[];this.processMutations(batch)}))}processMutations(mutations){const addedRoots=[];for(const mutation of mutations){if(mutation.type!=="childList")continue;mutation.addedNodes.forEach((node=>{if(node.nodeType===Node.ELEMENT_NODE){addedRoots.push(node)}}))}if(addedRoots.length){for(const root of addedRoots){this.scan(root)}}this.cleanupDisconnected()}scan(root){this.kits.forEach(((kitsForSelector,selector)=>{var _a;let matches;try{matches=root.querySelectorAll?root.querySelectorAll(selector):document.querySelectorAll(selector)}catch(error){console.debug(`[PbKitRegistry] Invalid selector "${selector}"`,error);return}if(matches&&matches.length){matches.forEach((el=>{kitsForSelector.forEach((kit=>kit.addMatch(el)))}))}if((_a=root.matches)==null?void 0:_a.call(root,selector)){kitsForSelector.forEach((kit=>kit.addMatch(root)))}}))}cleanupDisconnected(){this.kits.forEach((kitsForSelector=>{kitsForSelector.forEach((kit=>{if(!kit.elements)return;const els=Array.from(kit.elements.keys());for(const el of els){if(!el.isConnected){kit.removeMatch(el)}}}))}))}getRegisteredSelectors(){return Array.from(this.kits.keys())}rescan(root=document){if(!this.initialized)return;this.scan(root)}}const PbKitRegistry$1=PbKitRegistry.getInstance();class PbTextInput extends PbEnhancedElement{static get selector(){return'[data-pb-input-mask="true"], [data-pb-emoji-mask="true"]'}connect(){this.handleInput=this.handleInput.bind(this);this.handlePaste=this.handlePaste.bind(this);this.element.addEventListener("input",this.handleInput);this.element.addEventListener("paste",this.handlePaste);this.handleInput()}disconnect(){this.element.removeEventListener("input",this.handleInput);this.element.removeEventListener("paste",this.handlePaste)}hasEmojiMask(){return this.element.dataset.pbEmojiMask==="true"}handlePaste(event){if(!this.hasEmojiMask())return;const pastedText=event.clipboardData.getData("text");const filteredText=stripEmojisForPaste(pastedText);if(pastedText!==filteredText){event.preventDefault();const input=this.element;const start=input.selectionStart||0;const end=input.selectionEnd||0;const currentValue=input.value;const newValue=currentValue.slice(0,start)+filteredText+currentValue.slice(end);const newCursor=start+filteredText.length;input.value=newValue;input.selectionStart=input.selectionEnd=newCursor;this.handleInput({skipEmojiFilter:true})}}handleInput({skipEmojiFilter:skipEmojiFilter=false}={}){var _a;const cursorPosition=this.element.selectionStart;let baseValue=this.element.value;if(this.hasEmojiMask()&&!skipEmojiFilter){const result=applyEmojiMask(this.element);baseValue=result.value}const maskType=this.element.getAttribute("mask");let formattedValue=baseValue;const maskKey={currency:"currency",ssn:"ssn",postal_code:"postalCode",zip_code:"zipCode",credit_card:"creditCard",cvv:"cvv"}[maskType];if(maskKey&&INPUTMASKS[maskKey]){formattedValue=INPUTMASKS[maskKey].format(baseValue)}const sanitizedInput=(_a=this.element.closest(".text_input_wrapper"))==null?void 0:_a.querySelector('[data="sanitized-pb-input"]');if(sanitizedInput){switch(maskType){case"ssn":sanitizedInput.value=sanitizeSSN(formattedValue);break;case"currency":sanitizedInput.value=sanitizeCurrency(formattedValue);break;case"credit_card":sanitizedInput.value=sanitizeCreditCard(formattedValue);break;default:sanitizedInput.value=formattedValue}}if(maskType){this.element.value=formattedValue;setCursorPosition(this.element,cursorPosition,baseValue,formattedValue)}}}function sanitizeSSN(input){return input.replace(/\D/g,"")}function sanitizeCurrency(input){return input.replace(/[$,]/g,"")}function sanitizeCreditCard(input){return input.replace(/\D/g,"")}function setCursorPosition(inputElement,cursorPosition,rawValue,formattedValue){const difference=formattedValue.length-rawValue.length;const newPosition=Math.max(0,cursorPosition+difference);requestAnimationFrame((()=>{inputElement.setSelectionRange(newPosition,newPosition)}))}function getTextFromElement(element){if(!element)return"";return element.tagName.toLowerCase()==="input"?element.value:element.innerText}function copyTextToClipboard(text){if(!text)return;navigator.clipboard.writeText(text).catch((err=>console.error("Failed to copy text:",err)))}function handleExternalControlCopyClick(element){const value=element.getAttribute("data-external-copy-value");const fromId=element.getAttribute("data-external-copy-from");if(value){copyTextToClipboard(value)}else if(fromId){const fromElement=document.querySelector(`#${fromId}`);copyTextToClipboard(getTextFromElement(fromElement))}else{console.warn("Failed to copy:",element)}}class PbCopyButton extends PbEnhancedElement{static get selector(){return".pb_copy_button_kit"}connect(){this.handleClick=this.handleClick.bind(this);this.button=this.element.querySelector("button");if(this.button){this.button.addEventListener("click",this.handleClick)}}disconnect(){if(this.button){this.button.removeEventListener("click",this.handleClick)}}handleClick(){const value=this.element.getAttribute("data-copy-value");const fromId=this.element.getAttribute("data-from");if(value){copyTextToClipboard(value)}else if(fromId){const fromElement=document.querySelector(`#${fromId}`);copyTextToClipboard(getTextFromElement(fromElement))}else{console.warn("No data-copy-value or data-from attribute found")}}}function addCopyEventListeners(){const externalCopyElements=[...document.querySelectorAll("div[data-external-copy-value]"),...document.querySelectorAll("div[data-external-copy-from]")];externalCopyElements.forEach((element=>{element.addEventListener("click",(()=>handleExternalControlCopyClick(element)))}))}const toggleVisibility=({isVisible:isVisible,onHide:onHide,onShow:onShow})=>{if(isVisible){onHide();return false}onShow();return true};const getElementHeight=(element,displayValue="block")=>{const originalDisplay=element.style.display;element.style.display=displayValue;const height=`${element.scrollHeight}px`;element.style.display=originalDisplay;return height};const setArrowVisibility=({rootElement:rootElement,downSelector:downSelector,upSelector:upSelector,showDownArrow:showDownArrow,displayValue:displayValue="inline-block"})=>{const downArrow=rootElement.querySelector(downSelector);const upArrow=rootElement.querySelector(upSelector);if(downArrow){downArrow.style.display=showDownArrow?displayValue:"none"}if(upArrow){upArrow.style.display=showDownArrow?"none":displayValue}};const MAIN_SELECTOR="[data-collapsible-main]";const CONTENT_SELECTOR="[data-collapsible-content]";const DOWN_ARROW_SELECTOR$2="#collapsible_open_icon";const UP_ARROW_SELECTOR$2="#collapsible_close_icon";class PbCollapsible extends PbEnhancedElement{static get selector(){return MAIN_SELECTOR}connect(){this.clickHandler=()=>{this.toggleElement(this.target)};this.element.addEventListener("click",this.clickHandler);if(this.target.classList.contains("is-visible")){this.displayUpArrow()}else{this.displayDownArrow()}this.customEventHandler=()=>{this.toggleElement(this.target)};document.addEventListener(`${this.target.id}`,this.customEventHandler)}disconnect(){if(this.clickHandler){this.element.removeEventListener("click",this.clickHandler)}if(this.customEventHandler&&this.target){document.removeEventListener(`${this.target.id}`,this.customEventHandler)}}get target(){return this.element.parentNode.querySelector(CONTENT_SELECTOR)}showElement(elem){const height=getElementHeight(elem);elem.classList.add("is-visible");elem.style.height=height;elem.style.overflow="hidden";window.setTimeout((()=>{elem.style.height="";elem.style.overflow="visible"}),300)}hideElement(elem){elem.style.height=elem.scrollHeight+"px";window.setTimeout((()=>{elem.style.height="0";elem.style.paddingTop="0";elem.style.paddingBottom="0";elem.style.overflow="hidden"}),1);window.setTimeout((()=>{elem.classList.remove("is-visible");elem.style.overflow=""}),300)}toggleElement(elem){const isExpanded=toggleVisibility({isVisible:elem.classList.contains("is-visible"),onHide:()=>this.hideElement(elem),onShow:()=>this.showElement(elem)});isExpanded?this.displayUpArrow():this.displayDownArrow()}toggleArrows(showDownArrow){setArrowVisibility({rootElement:this.element,downSelector:DOWN_ARROW_SELECTOR$2,upSelector:UP_ARROW_SELECTOR$2,showDownArrow:showDownArrow})}displayDownArrow(){this.toggleArrows(true)}displayUpArrow(){this.toggleArrows(false)}}class PbFixedConfirmationToast extends PbEnhancedElement{static get selector(){return'[class*="pb_fixed_confirmation_toast_kit"]'}connect(){this.self=this.element;this.autoCloseToast(this.self);if(this.self.classList.contains("remove_toast")){this.self.addEventListener("click",(()=>{this.removeToast(this.self)}))}}removeToast(elem){elem.parentNode.removeChild(elem)}autoCloseToast(element){const autoCloseDataAttr=element.getAttribute("data-pb-auto-close");if(autoCloseDataAttr){setTimeout((()=>{this.removeToast(element)}),parseInt(autoCloseDataAttr))}}}const OPTION_SELECTOR$1="[data-dropdown-option-label]";const SEARCH_INPUT_SELECTOR$1="[data-dropdown-autocomplete]";class PbDropdownKeyboard{constructor(dropdown){this.dropdown=dropdown;this.dropdownElement=dropdown.element;this.options=Array.from(this.dropdownElement.querySelectorAll(OPTION_SELECTOR$1));this.focusedOptionIndex=-1;this.searchInput=this.dropdownElement.querySelector(SEARCH_INPUT_SELECTOR$1);this.handleKeyDownBound=this.handleKeyDown.bind(this);this.handleSearchInputBound=()=>this.openDropdownIfClosed();this.init()}init(){this.dropdownElement.addEventListener("keydown",this.handleKeyDownBound);if(this.searchInput){this.searchInput.addEventListener("input",this.handleSearchInputBound)}}disconnect(){if(this.dropdownElement&&this.handleKeyDownBound){this.dropdownElement.removeEventListener("keydown",this.handleKeyDownBound)}if(this.searchInput&&this.handleSearchInputBound){this.searchInput.removeEventListener("input",this.handleSearchInputBound)}}getVisibleOptions(){return Array.from(this.dropdownElement.querySelectorAll(OPTION_SELECTOR$1)).filter((opt=>opt.style.display!=="none"))}openDropdownIfClosed(){if(!this.dropdown.target.classList.contains("open")){this.dropdown.showElement(this.dropdown.target);this.dropdown.updateArrowDisplay(true)}}handleKeyDown(event){switch(event.key){case"ArrowDown":event.preventDefault();if(!this.dropdown.target.classList.contains("open")){this.dropdown.showElement(this.dropdown.target);this.dropdown.updateArrowDisplay(true)}this.moveFocus(1);break;case"ArrowUp":event.preventDefault();this.moveFocus(-1);break;case"Enter":event.preventDefault();if(this.focusedOptionIndex!==-1){this.selectOption()}else{if(!this.dropdown.target.classList.contains("open")){this.dropdown.showElement(this.dropdown.target);this.dropdown.updateArrowDisplay(true)}}break;case"Escape":this.dropdown.hideElement(this.dropdown.target);break;case"Tab":this.dropdown.hideElement(this.dropdown.target);this.dropdown.updateArrowDisplay(false);this.resetFocus();break;case"Backspace":if(this.searchInput){setTimeout((()=>{if(this.searchInput.value.trim()===""){this.dropdown.handleBackspaceClear()}}),0)}break}}moveFocus(direction){const allOptions=Array.from(this.dropdownElement.querySelectorAll(OPTION_SELECTOR$1));const visible=this.getVisibleOptions();if(!visible.length)return;if(this.focusedOptionIndex!==-1){allOptions[this.focusedOptionIndex].classList.remove("pb_dropdown_option_focused")}const prevVisibleIndex=this.focusedOptionIndex===-1?-1:visible.indexOf(allOptions[this.focusedOptionIndex]);const nextVisibleIndex=(prevVisibleIndex+direction+visible.length)%visible.length;const nextEl=visible[nextVisibleIndex];nextEl.classList.add("pb_dropdown_option_focused");this.focusedOptionIndex=allOptions.indexOf(nextEl)}selectOption(){const allOptions=Array.from(this.dropdownElement.querySelectorAll(OPTION_SELECTOR$1));if(this.focusedOptionIndex<0)return;const optionEl=allOptions[this.focusedOptionIndex];this.dropdown.handleOptionClick({target:optionEl});this.dropdown.toggleElement(this.dropdown.target);this.dropdown.updateClearButton()}}const DROPDOWN_SELECTOR="[data-pb-dropdown]";const TRIGGER_SELECTOR="[data-dropdown-trigger]";const CONTAINER_SELECTOR="[data-dropdown-container]";const DOWN_ARROW_SELECTOR$1="[data-dropdown-open-icon]";const UP_ARROW_SELECTOR$1="[data-dropdown-close-icon]";const OPTION_SELECTOR="[data-dropdown-option-label]";const CUSTOM_DISPLAY_SELECTOR="[data-dropdown-custom-trigger]";const DROPDOWN_TRIGGER_DISPLAY="[data-dropdown-trigger-display]";const DROPDOWN_PLACEHOLDER="[data-dropdown-placeholder]";const DROPDOWN_INPUT="[data-dropdown-selected-option]";const SEARCH_INPUT_SELECTOR="[data-dropdown-autocomplete]";const SEARCH_BAR_SELECTOR="[data-dropdown-search]";const CLEAR_ICON_SELECTOR="[data-dropdown-clear-icon]";const LABEL_SELECTOR='[data-dropdown="pb-dropdown-label"]';class PbDropdown extends PbEnhancedElement{constructor(){super(...arguments);__publicField(this,"selectedOptions",new Set);__publicField(this,"clearBtn",null)}static get selector(){return DROPDOWN_SELECTOR}get target(){var _a;return((_a=this.cachedElements)==null?void 0:_a.target)||this.element.querySelector(CONTAINER_SELECTOR)}get baseInput(){var _a;return((_a=this.cachedElements)==null?void 0:_a.baseInput)||this.element.querySelector(DROPDOWN_INPUT)}get trigger(){var _a;return((_a=this.cachedElements)==null?void 0:_a.trigger)||this.element.querySelector(TRIGGER_SELECTOR)}get customTrigger(){var _a;return((_a=this.cachedElements)==null?void 0:_a.customTrigger)||this.element.querySelector(CUSTOM_DISPLAY_SELECTOR)}get dropdownWrapper(){var _a;return((_a=this.cachedElements)==null?void 0:_a.dropdownWrapper)||this.element.querySelector(".dropdown_wrapper")}get placeholder(){var _a;return((_a=this.cachedElements)==null?void 0:_a.placeholder)||this.element.querySelector(DROPDOWN_PLACEHOLDER)}cacheElements(){this.cachedElements={target:this.element.querySelector(CONTAINER_SELECTOR),baseInput:this.element.querySelector(DROPDOWN_INPUT),trigger:this.element.querySelector(TRIGGER_SELECTOR),customTrigger:this.element.querySelector(CUSTOM_DISPLAY_SELECTOR),dropdownWrapper:this.element.querySelector(".dropdown_wrapper"),placeholder:this.element.querySelector(DROPDOWN_PLACEHOLDER)}}connect(){this.element._pbDropdownInstance=this;this.cacheElements();this.keyboardHandler=new PbDropdownKeyboard(this);this.isMultiSelect=this.element.dataset.pbDropdownMultiSelect==="true";this.closeOnClick=this.element.dataset.pbDropdownCloseOnClick||"any";this.formPillProps=this.element.dataset.formPillProps?JSON.parse(this.element.dataset.formPillProps):{};const baseInput=this.baseInput;this.wasOriginallyRequired=baseInput&&baseInput.hasAttribute("required");this.setDefaultValue();this.bindEventListeners();this.bindSearchInput();this.updateArrowDisplay(false);this.handleFormValidation();this.handleFormReset();this.bindSearchBar();this.updatePills();this.clearBtn=this.element.querySelector(CLEAR_ICON_SELECTOR);this.isClearable=this.element.dataset.pbDropdownClearable!=="false";if(this.clearBtn){this.clearBtn.style.display="none";this.clearBtnHandler=e=>{e.stopPropagation();this.clearSelection()};this.clearBtn.addEventListener("click",this.clearBtnHandler)}this.updateClearButton();this.handleClearEventBound=this.handleClearEvent.bind(this);document.addEventListener("pb:dropdown:clear",this.handleClearEventBound);this.handleSelectEventBound=this.handleSelectEvent.bind(this);document.addEventListener("pb:dropdown:select",this.handleSelectEventBound);const customEventTypeString=this.element.dataset.customEventType;if(customEventTypeString){this.customClearEventTypes=customEventTypeString.split(",").map((e=>e.trim())).filter(Boolean);this.handleCustomClearBound=this.handleCustomClearEvent.bind(this);this.customClearEventTypes.forEach((eventType=>{document.addEventListener(eventType,this.handleCustomClearBound)}))}}disconnect(){if(this.element._pbDropdownInstance===this){delete this.element._pbDropdownInstance}if(this.keyboardHandler&&typeof this.keyboardHandler.disconnect==="function"){this.keyboardHandler.disconnect()}if(this.customTriggerClickHandler){const customTrigger=this.customTrigger||this.element;customTrigger.removeEventListener("click",this.customTriggerClickHandler)}if(this.handleOptionClickBound){this.target.removeEventListener("click",this.handleOptionClickBound)}if(this.handleDocumentClickBound){document.removeEventListener("click",this.handleDocumentClickBound,true)}if(this.searchBar&&this.searchBarHandler){this.searchBar.removeEventListener("input",this.searchBarHandler)}if(this.searchInput){if(this.searchInputFocusHandler){const trigger=this.trigger;if(trigger){trigger.removeEventListener("click",this.searchInputFocusHandler)}}if(this.searchInputHandler){this.searchInput.removeEventListener("input",this.searchInputHandler)}}if(this.clearBtn&&this.clearBtnHandler){this.clearBtn.removeEventListener("click",this.clearBtnHandler)}if(this.handleClearEventBound){document.removeEventListener("pb:dropdown:clear",this.handleClearEventBound)}if(this.handleSelectEventBound){document.removeEventListener("pb:dropdown:select",this.handleSelectEventBound)}if(this.customClearEventTypes&&this.handleCustomClearBound){this.customClearEventTypes.forEach((eventType=>{document.removeEventListener(eventType,this.handleCustomClearBound)}))}}updateClearButton(){var _a;if(!this.clearBtn)return;if(!this.isClearable){this.clearBtn.style.display="none";return}const hasSelection=this.isMultiSelect?this.selectedOptions.size>0:Boolean((_a=this.baseInput)==null?void 0:_a.value);this.clearBtn.style.display=hasSelection?"":"none"}bindEventListeners(){const customTrigger=this.customTrigger||this.element;this.customTriggerClickHandler=e=>{var _a;const label=e.target.closest(LABEL_SELECTOR);if(label&&label.htmlFor){const trigger=this.element.querySelector(`#${CSS.escape(label.htmlFor)}`);if(trigger){trigger.focus()}}if(this.closeOnClick==="outside"&&((_a=this.target)==null?void 0:_a.contains(e.target))){return}this.toggleElement(this.target)};customTrigger.addEventListener("click",this.customTriggerClickHandler);this.handleOptionClickBound=this.handleOptionClick.bind(this);this.target.addEventListener("click",this.handleOptionClickBound);this.handleDocumentClickBound=this.handleDocumentClick.bind(this);document.addEventListener("click",this.handleDocumentClickBound,true)}bindSearchBar(){this.searchBar=this.element.querySelector(SEARCH_BAR_SELECTOR);if(!this.searchBar)return;this.searchBarHandler=e=>this.handleSearch(e.target.value);this.searchBar.addEventListener("input",this.searchBarHandler)}bindSearchInput(){var _a;this.searchInput=this.element.querySelector(SEARCH_INPUT_SELECTOR);if(!this.searchInput)return;this.searchInputFocusHandler=()=>this.searchInput.focus();(_a=this.trigger)==null?void 0:_a.addEventListener("click",this.searchInputFocusHandler);this.searchInputHandler=e=>this.handleSearch(e.target.value);this.searchInput.addEventListener("input",this.searchInputHandler)}adjustDropdownHeight(){if(this.target.classList.contains("open")){const el=this.target;const shouldConstrain=el.classList.contains("constrain_height");el.style.height="auto";requestAnimationFrame((()=>{if(shouldConstrain){const fontSize=parseFloat(getComputedStyle(el).fontSize)||16;const maxHeight=fontSize*18;const scrollHeight=el.scrollHeight;const newHeight=Math.min(scrollHeight,maxHeight);el.offsetHeight;el.style.height=newHeight+"px"}else{el.offsetHeight;el.style.height=el.scrollHeight+"px"}}))}}adjustDropdownPosition(container){if(!container)return;const wrapper=this.dropdownWrapper;if(!wrapper)return;const wrapperRect=wrapper.getBoundingClientRect();const h=container.getBoundingClientRect().height||container.scrollHeight;const spaceBelow=window.innerHeight-wrapperRect.bottom;const spaceAbove=wrapperRect.top;if(spaceBelow<h+10&&spaceAbove>=h+10){container.style.top="auto";container.style.bottom="calc(100% + 5px)";container.style.marginTop="0";container.style.marginBottom="0"}else{container.style.top="";container.style.bottom="";container.style.marginTop="";container.style.marginBottom=""}}handleSearch(term=""){const lcTerm=term.toLowerCase();let hasMatch=false;this.element.querySelectorAll(OPTION_SELECTOR).forEach((opt=>{if(this.isMultiSelect&&this.selectedOptions.has(opt.dataset.dropdownOptionLabel)){opt.style.display="none";return}const label=JSON.parse(opt.dataset.dropdownOptionLabel).label.toString().toLowerCase();const match=label.includes(lcTerm);opt.style.display=match?"":"none";if(match)hasMatch=true}));this.adjustDropdownHeight();this.removeNoOptionsMessage();if(!hasMatch){this.showNoOptionsMessage()}}showNoOptionsMessage(){if(this.element.querySelector(".dropdown_no_options"))return;const noOptionElement=document.createElement("div");noOptionElement.className="pb_body_kit_light dropdown_no_options pb_item_kit p_xs display_flex justify_content_center";noOptionElement.textContent="no option";this.target.appendChild(noOptionElement)}removeNoOptionsMessage(){const existing=this.element.querySelector(".dropdown_no_options");if(existing){existing.remove()}}handleOptionClick(event){const option=event.target.closest(OPTION_SELECTOR);const hiddenInput=this.baseInput;if(option){const value=option.dataset.dropdownOptionLabel;if(this.isMultiSelect){const alreadySelected=this.selectedOptions.has(value);if(alreadySelected){this.selectedOptions.delete(value)}else{this.selectedOptions.add(value)}this.updatePills();this.syncHiddenInputs();if(this.searchInput&&this.isMultiSelect){this.searchInput.value="";this.handleBackspaceClear()}}else{hiddenInput.value=JSON.parse(value).id}this.clearFormValidation(hiddenInput);this.onOptionSelected(value,option);this.updateClearButton()}}handleDocumentClick(event){if(event.target.closest(SEARCH_BAR_SELECTOR))return;const shouldCloseOnOutsideClick=this.closeOnClick==="outside"||this.closeOnClick==="any";if(shouldCloseOnOutsideClick&&this.isClickOutside(event)&&this.target.classList.contains("open")){this.hideElement(this.target);this.updateArrowDisplay(false)}}handleClearEvent(event){var _a;const targetId=(_a=event.detail)==null?void 0:_a.dropdownId;if(targetId&&this.element.id===targetId){this.clearSelection()}}handleCustomClearEvent(event){var _a;const targetId=(_a=event.detail)==null?void 0:_a.dropdownId;if(targetId==null||this.element.id===targetId){this.clearSelection()}}handleSelectEvent(event){var _a,_b,_c;const targetId=(_a=event.detail)==null?void 0:_a.dropdownId;if(!targetId||this.element.id!==targetId)return;const optionId=(_b=event.detail)==null?void 0:_b.optionId;const optionIds=(_c=event.detail)==null?void 0:_c.optionIds;if(optionId!=null){this.setSelectionByOptionId(optionId)}else if(Array.isArray(optionIds)){this.setSelectionByOptionIds(optionIds)}}setSelectionByOptionId(optionId){if(this.isMultiSelect)return;const hiddenInput=this.baseInput;const optionEls=Array.from(this.element.querySelectorAll(OPTION_SELECTOR));const selectedOption=optionEls.find((opt=>{try{return JSON.parse(opt.dataset.dropdownOptionLabel).id===optionId}catch{return false}}));if(!selectedOption)return;optionEls.forEach((opt=>opt.classList.remove("pb_dropdown_option_selected")));selectedOption.classList.add("pb_dropdown_option_selected");if(hiddenInput)hiddenInput.value=optionId;const optionData=JSON.parse(selectedOption.dataset.dropdownOptionLabel);const customDisplayElement=this.element.querySelector("[data-dropdown-trigger-custom-display]");if(customDisplayElement){this.setTriggerElementText("");customDisplayElement.style.display="block";customDisplayElement.style.paddingRight="8px"}else{this.setTriggerElementText(optionData.label)}if(this.searchInput){this.searchInput.value=optionData.label}if(optionData.formatted_start_date&&optionData.formatted_end_date){const startDateId=this.element.dataset.startDateId;const endDateId=this.element.dataset.endDateId;const controlsStartId=this.element.dataset.controlsStartId;const controlsEndId=this.element.dataset.controlsEndId;if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=optionData.formatted_start_date}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=optionData.formatted_end_date}const syncDatePickers=()=>{var _a,_b;if(controlsStartId){const startPicker=(_a=document.querySelector(`#${CSS.escape(controlsStartId)}`))==null?void 0:_a._flatpickr;if(startPicker)startPicker.setDate(optionData.formatted_start_date,true,"m/d/Y")}if(controlsEndId){const endPicker=(_b=document.querySelector(`#${CSS.escape(controlsEndId)}`))==null?void 0:_b._flatpickr;if(endPicker)endPicker.setDate(optionData.formatted_end_date,true,"m/d/Y")}};syncDatePickers();setTimeout(syncDatePickers,100);setTimeout(syncDatePickers,300)}this.updateClearButton();this.emitSelectionChange()}setSelectionByOptionIds(optionIds){if(!this.isMultiSelect||!optionIds.length)return;const optionEls=Array.from(this.element.querySelectorAll(OPTION_SELECTOR));this.selectedOptions.clear();optionEls.forEach((opt=>{opt.classList.remove("pb_dropdown_option_selected");opt.style.display=""}));optionIds.forEach((id=>{const opt=optionEls.find((o=>{try{return JSON.parse(o.dataset.dropdownOptionLabel).id===id}catch{return false}}));if(opt){const raw=opt.dataset.dropdownOptionLabel;this.selectedOptions.add(raw);opt.style.display="none"}}));this.updatePills();this.updateClearButton();this.adjustDropdownHeight();this.syncHiddenInputs();this.emitSelectionChange()}isClickOutside(event){var _a;const label=event.target.closest(LABEL_SELECTOR);if(label&&this.element.contains(label))return false;const customTrigger=this.customTrigger;if(customTrigger){const clickInTrigger=customTrigger.contains(event.target);const clickInContainer=(_a=this.target)==null?void 0:_a.contains(event.target);return!clickInTrigger&&!clickInContainer}else{const triggerElement=this.trigger;const containerElement=this.element.querySelector(CONTAINER_SELECTOR);const isOutsideTrigger=triggerElement?!triggerElement.contains(event.target):true;const isOutsideContainer=containerElement?!containerElement.contains(event.target):true;return isOutsideTrigger&&isOutsideContainer}}emitSelectionChange(){let detail;if(this.isMultiSelect){detail=Array.from(this.selectedOptions).map(JSON.parse)}else{const hiddenInput=this.baseInput;detail=hiddenInput.value?JSON.parse(this.element.querySelector(OPTION_SELECTOR+`[data-dropdown-option-label*='"id":"${hiddenInput.value}"']`).dataset.dropdownOptionLabel):null}this.element.setAttribute("data-option-selected",JSON.stringify(detail));this.element.dispatchEvent(new CustomEvent("pb:dropdown:selected",{detail:detail,bubbles:true}))}onOptionSelected(value,selectedOption){var _a,_b,_c,_d;const triggerElement=this.element.querySelector(DROPDOWN_TRIGGER_DISPLAY);const customDisplayElement=this.element.querySelector("[data-dropdown-trigger-custom-display]");if(triggerElement){if(!this.isMultiSelect){const selectedLabel=JSON.parse(value).label;triggerElement.textContent=selectedLabel;this.emitSelectionChange();const optionData=JSON.parse(value);const startDateId=this.element.dataset.startDateId;const endDateId=this.element.dataset.endDateId;const controlsStartId=this.element.dataset.controlsStartId;const controlsEndId=this.element.dataset.controlsEndId;if(optionData.formatted_start_date&&optionData.formatted_end_date){if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=optionData.formatted_start_date}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=optionData.formatted_end_date}if(controlsStartId){const startPicker=(_a=document.querySelector(`#${controlsStartId}`))==null?void 0:_a._flatpickr;if(startPicker){startPicker.setDate(optionData.formatted_start_date,true,"m/d/Y")}}if(controlsEndId){const endPicker=(_b=document.querySelector(`#${controlsEndId}`))==null?void 0:_b._flatpickr;if(endPicker){endPicker.setDate(optionData.formatted_end_date,true,"m/d/Y")}}}else if(startDateId||endDateId){if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=""}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=""}if(controlsStartId){const startPicker=(_c=document.querySelector(`#${controlsStartId}`))==null?void 0:_c._flatpickr;if(startPicker){startPicker.clear()}}if(controlsEndId){const endPicker=(_d=document.querySelector(`#${controlsEndId}`))==null?void 0:_d._flatpickr;if(endPicker){endPicker.clear()}}}}if(customDisplayElement){triggerElement.textContent="";customDisplayElement.style.display="block";customDisplayElement.style.paddingRight="8px"}}const autocompleteInput=this.element.querySelector(SEARCH_INPUT_SELECTOR);if(autocompleteInput&&!this.isMultiSelect){autocompleteInput.value=JSON.parse(value).label;this.emitSelectionChange()}const customTrigger=this.customTrigger;const shouldCloseOnOptionSelect=this.closeOnClick==="any"||this.closeOnClick==="inside";if(customTrigger&&shouldCloseOnOptionSelect&&this.target.classList.contains("open")){this.hideElement(this.target);this.updateArrowDisplay(false)}const options=this.element.querySelectorAll(OPTION_SELECTOR);if(this.isMultiSelect){this.emitSelectionChange();Array.from(this.selectedOptions).map((option=>{if(JSON.parse(option).id===JSON.parse(selectedOption.dataset.dropdownOptionLabel).id){selectedOption.style.display="none";this.adjustDropdownHeight()}}));this.baseInput.value=Array.from(this.selectedOptions).map((opt=>JSON.parse(opt).id)).join(",")}else{options.forEach((option=>{option.classList.remove("pb_dropdown_option_selected")}));selectedOption.classList.add("pb_dropdown_option_selected")}this.updateClearButton()}showElement(elem){elem.classList.remove("close");elem.classList.add("open");const shouldConstrain=elem.classList.contains("constrain_height");if(shouldConstrain){const fontSize=parseFloat(getComputedStyle(elem).fontSize)||16;const maxHeight=fontSize*18;const scrollHeight=elem.scrollHeight;const height=Math.min(scrollHeight,maxHeight);elem.style.height=height+"px"}else{elem.style.height=elem.scrollHeight+"px"}this.adjustDropdownPosition(elem)}hideElement(elem){elem.style.height=elem.scrollHeight+"px";window.setTimeout((()=>{elem.classList.add("close");elem.classList.remove("open");this.resetFocus()}),0)}resetFocus(){if(this.keyboardHandler){this.keyboardHandler.focusedOptionIndex=-1;const options=this.element.querySelectorAll(OPTION_SELECTOR);options.forEach((option=>option.classList.remove("pb_dropdown_option_focused")))}}toggleElement(elem){const isOpen=toggleVisibility({isVisible:elem.classList.contains("open"),onHide:()=>this.hideElement(elem),onShow:()=>this.showElement(elem)});this.updateArrowDisplay(isOpen)}updateArrowDisplay(isOpen){setArrowVisibility({rootElement:this.element,downSelector:DOWN_ARROW_SELECTOR$1,upSelector:UP_ARROW_SELECTOR$1,showDownArrow:!isOpen})}handleFormValidation(){const hiddenInput=this.baseInput;hiddenInput.addEventListener("invalid",(function(event){if(hiddenInput.hasAttribute("required")&&hiddenInput.value===""){event.preventDefault();hiddenInput.closest(".dropdown_wrapper").classList.add("error")}}),true)}clearFormValidation(input){if(this.isMultiSelect){if(this.selectedOptions.size>0){const dropdownWrapperElement=input.closest(".dropdown_wrapper");dropdownWrapperElement.classList.remove("error");const errorLabelElement=dropdownWrapperElement.querySelector(".pb_body_kit_negative");if(errorLabelElement){errorLabelElement.remove()}return}}if(input.checkValidity()){const dropdownWrapperElement=input.closest(".dropdown_wrapper");dropdownWrapperElement.classList.remove("error");const errorLabelElement=dropdownWrapperElement.querySelector(".pb_body_kit_negative");if(errorLabelElement){errorLabelElement.remove()}}}setDefaultValue(){const hiddenInput=this.baseInput;const optionEls=Array.from(this.element.querySelectorAll(OPTION_SELECTOR));const defaultValue=hiddenInput.dataset.defaultValue||"";if(!defaultValue)return;if(this.isMultiSelect){const ids=defaultValue.split(",");ids.forEach((id=>{const selectedOption=optionEls.find((opt=>{try{return JSON.parse(opt.dataset.dropdownOptionLabel).id===id}catch{return false}}));if(!selectedOption){console.warn(`Dropdown default ID ${id} not found`);return}const raw=selectedOption.dataset.dropdownOptionLabel;this.selectedOptions.add(raw);selectedOption.style.display="none"}));this.updatePills();this.updateClearButton();this.adjustDropdownHeight();this.syncHiddenInputs()}else{hiddenInput.value=defaultValue;const selectedOption=optionEls.find((opt=>{try{return JSON.parse(opt.dataset.dropdownOptionLabel).id===defaultValue}catch{return false}}));if(!selectedOption)return;selectedOption.classList.add("pb_dropdown_option_selected");const optionData=JSON.parse(selectedOption.dataset.dropdownOptionLabel);this.setTriggerElementText(optionData.label);if(optionData.formatted_start_date&&optionData.formatted_end_date){const startDateId=this.element.dataset.startDateId;const endDateId=this.element.dataset.endDateId;const controlsStartId=this.element.dataset.controlsStartId;const controlsEndId=this.element.dataset.controlsEndId;if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=optionData.formatted_start_date}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=optionData.formatted_end_date}const syncDatePickers=()=>{var _a,_b;if(controlsStartId){const startPicker=(_a=document.querySelector(`#${controlsStartId}`))==null?void 0:_a._flatpickr;if(startPicker){startPicker.setDate(optionData.formatted_start_date,true,"m/d/Y")}}if(controlsEndId){const endPicker=(_b=document.querySelector(`#${controlsEndId}`))==null?void 0:_b._flatpickr;if(endPicker){endPicker.setDate(optionData.formatted_end_date,true,"m/d/Y")}}};syncDatePickers();setTimeout(syncDatePickers,100);setTimeout(syncDatePickers,300)}}}handleFormReset(){const form=this.element.closest("form");if(form){form.addEventListener("reset",(()=>{this.resetDropdownValue()}))}}resetDropdownValue(){const hiddenInput=this.baseInput;const options=this.element.querySelectorAll(OPTION_SELECTOR);options.forEach((option=>{option.classList.remove("pb_dropdown_option_selected");option.style.display=""}));hiddenInput.value="";const defaultPlaceholder=this.placeholder;this.setTriggerElementText(defaultPlaceholder.dataset.dropdownPlaceholder);if(this.searchInput){this.searchInput.value="";if(this.target.classList.contains("open")){const el=this.target;el.style.height="auto";requestAnimationFrame((()=>{const newHeight=el.scrollHeight+"px";el.offsetHeight;el.style.height=newHeight}))}}if(this.isMultiSelect){this.selectedOptions.clear();this.updatePills();this.updateClearButton();this.syncHiddenInputs()}}setTriggerElementText(text){const triggerElement=this.element.querySelector(DROPDOWN_TRIGGER_DISPLAY);if(triggerElement){triggerElement.textContent=text}}updatePills(){if(!this.isMultiSelect)return;const wrapper=this.element.querySelector("[data-dropdown-pills-wrapper]");const placeholder=this.element.querySelector("[data-dropdown-trigger-display-multi-select]");if(!wrapper)return;wrapper.innerHTML="";if(placeholder){if(this.selectedOptions.size>0){placeholder.style.display="none"}else{placeholder.style.display=""}}Array.from(this.selectedOptions).map((option=>{const pill=document.createElement("div");const color=this.formPillProps.color||"primary";pill.classList.add("pb_form_pill_kit",`pb_form_pill_${color}`,"pb_form_pill_none","mr_xs");if(this.formPillProps.size==="small"){pill.classList.add("pb_form_pill_small")}pill.tabIndex=0;pill.dataset.pillId=JSON.parse(option).id;const innerDiv=document.createElement("h3");innerDiv.className="pb_title_kit pb_title_4 pb_form_pill_text";innerDiv.textContent=JSON.parse(option).label;pill.appendChild(innerDiv);const closeIcon=document.createElement("div");closeIcon.className="pb_form_pill_close";closeIcon.innerHTML=`<svg class="pb_custom_icon svg-inline--fa svg_${this.formPillProps.size==="small"?"xs":"sm"} svg_fw" xmlns="http://www.w3.org/2000/svg" width="auto" height="auto" viewBox="0 0 31 25"><path fill="currentColor" d="M23.0762 6.77734L17.4512 12.4023L23.0293 17.9805C23.498 18.4023 23.498 19.1055 23.0293 19.5273C22.6074 19.9961 21.9043 19.9961 21.4824 19.5273L15.8574 13.9492L10.2793 19.5273C9.85742 19.9961 9.1543 19.9961 8.73242 19.5273C8.26367 19.1055 8.26367 18.4023 8.73242 17.9336L14.3105 12.3555L8.73242 6.77734C8.26367 6.35547 8.26367 5.65234 8.73242 5.18359C9.1543 4.76172 9.85742 4.76172 10.3262 5.18359L15.9043 10.8086L21.4824 5.23047C21.9043 4.76172 22.6074 4.76172 23.0762 5.23047C23.498 5.65234 23.498 6.35547 23.0762 6.77734Z"/></svg>`;pill.appendChild(closeIcon);closeIcon.addEventListener("click",(e=>{e.stopPropagation();const id=pill.dataset.pillId;this.selectedOptions.delete(option);const optEl=this.element.querySelector(`${OPTION_SELECTOR}[data-dropdown-option-label*='"id":${JSON.stringify(id)}']`);if(optEl){optEl.style.display="";if(this.target.classList.contains("open")){this.showElement(this.target)}}this.updatePills();this.updateClearButton();this.emitSelectionChange();this.syncHiddenInputs()}));wrapper.appendChild(pill)}))}clearSelection(){var _a,_b;if(this.isMultiSelect){this.selectedOptions.clear();this.element.querySelectorAll(OPTION_SELECTOR).forEach((opt=>{opt.style.display=""}));if(this.target.classList.contains("open")){this.showElement(this.target)}}const customDisplay=this.element.querySelector("[data-dropdown-trigger-custom-display]");if(customDisplay){customDisplay.style.display="none"}const startDateId=this.element.dataset.startDateId;const endDateId=this.element.dataset.endDateId;const controlsStartId=this.element.dataset.controlsStartId;const controlsEndId=this.element.dataset.controlsEndId;if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=""}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=""}if(controlsStartId){const startPicker=(_a=document.querySelector(`#${controlsStartId}`))==null?void 0:_a._flatpickr;if(startPicker){startPicker.clear()}}if(controlsEndId){const endPicker=(_b=document.querySelector(`#${controlsEndId}`))==null?void 0:_b._flatpickr;if(endPicker){endPicker.clear()}}this.resetDropdownValue();this.updatePills();this.updateClearButton();this.syncHiddenInputs();this.emitSelectionChange()}clearSelected(){if(this.element.dataset.pbDropdownVariant!=="quickpick"||this.isMultiSelect){return}const customDisplay=this.element.querySelector("[data-dropdown-trigger-custom-display]");if(customDisplay){customDisplay.style.display="none"}const startDateId=this.element.dataset.startDateId;const endDateId=this.element.dataset.endDateId;if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=""}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=""}this.resetDropdownValue();this.updateClearButton();this.emitSelectionChange()}syncHiddenInputs(){if(!this.isMultiSelect)return;this.element.querySelectorAll('input[data-generated="true"]').forEach((n=>n.remove()));const baseInput=this.baseInput;if(!baseInput)return;const name=baseInput.getAttribute("name");this.selectedOptions.forEach((raw=>{const optionData=JSON.parse(raw);const id=optionData.id||optionData.value;const inp=document.createElement("input");inp.type="hidden";inp.name=name;inp.value=id;inp.dataset.generated="true";baseInput.insertAdjacentElement("afterend",inp)}));if(this.selectedOptions.size>0){baseInput.value="";baseInput.removeAttribute("required")}else{baseInput.value="";if(this.wasOriginallyRequired){baseInput.setAttribute("required","")}}}handleBackspaceClear(){if(!this.isMultiSelect){this.element.querySelectorAll(OPTION_SELECTOR).forEach((opt=>{opt.classList.remove("pb_dropdown_option_selected");opt.style.display="";this.adjustDropdownHeight()}));const hiddenInput=this.baseInput;if(hiddenInput)hiddenInput.value="";const placeholder=this.placeholder;if(placeholder)this.setTriggerElementText(placeholder.dataset.dropdownPlaceholder)}if(this.isMultiSelect){this.element.querySelectorAll(OPTION_SELECTOR).forEach((opt=>{const optValue=opt.dataset.dropdownOptionLabel;if(this.selectedOptions.size>0&&this.selectedOptions.has(optValue)){opt.style.display="none"}else{opt.style.display=""}this.adjustDropdownHeight()}))}}}function showActionBar(actionBar,selectedCount){const tableContainer=actionBar.closest(".pb_advanced_table");actionBar.style.height="auto";actionBar.style.overflow="visible";actionBar.style.opacity="1";actionBar.style.transitionProperty="all";actionBar.style.transitionTimingFunction="ease-in-out";actionBar.classList.remove("p_none");actionBar.classList.add("p_xs","is-visible","show-action-card");if(tableContainer){tableContainer.classList.remove("hidden-action-bar")}const countElement=actionBar.querySelector(".selected-count");if(countElement){countElement.textContent=`${selectedCount} Selected`}}function hideActionBar(actionBar){const tableContainer=actionBar.closest(".pb_advanced_table");actionBar.style.height="0px";actionBar.style.overflow="hidden";actionBar.style.opacity="0";actionBar.classList.add("p_none");actionBar.classList.remove("p_xs","is-visible","show-action-card");if(tableContainer){tableContainer.classList.add("hidden-action-bar")}}function updateSelectionActionBar(table,selectedCount){const actionBar=table.querySelector(".row-selection-actions-card");if(!actionBar)return;if(selectedCount>0){showActionBar(actionBar,selectedCount)}else{hideActionBar(actionBar)}}const ADVANCED_TABLE_SELECTOR="[data-advanced-table]";const DOWN_ARROW_SELECTOR="#advanced-table_open_icon";const UP_ARROW_SELECTOR="#advanced-table_close_icon";const _PbAdvancedTable=class _PbAdvancedTable extends PbEnhancedElement{static get selector(){return ADVANCED_TABLE_SELECTOR}constructor(...args){super(...args);this.childRowsMap=new Map}get table(){return this.cachedTable||(this.cachedTable=this.element.closest("table"))}get mainTable(){return this.cachedMainTable||(this.cachedMainTable=this.element.closest(".pb_advanced_table"))}childRowsFor(parentId){if(!this.childRowsMap.has(parentId)){const table=this.table;const rows=Array.from(table.querySelectorAll(`tr[data-row-parent="${parentId}"]`));this.childRowsMap.set(parentId,rows)}return this.childRowsMap.get(parentId)}updateTableSelectedRowsAttribute(){const mainTable=this.mainTable;if(!mainTable)return;mainTable.dataset.selectedRows=JSON.stringify(Array.from(_PbAdvancedTable.selectedRows))}recalculateSelectedCount(){const table=this.table;if(!table)return;const rowCheckboxes=table.querySelectorAll('label[data-row-id] input[type="checkbox"]');const parentCheckboxes=table.querySelectorAll('[data-pb-checkbox-indeterminate-main="true"] input[type="checkbox"]');const selectAllCheckbox=table.querySelector('#select-all-rows input[type="checkbox"]');const filteredParentCheckboxes=Array.from(parentCheckboxes).filter((checkbox=>checkbox!==selectAllCheckbox&&!checkbox.id.includes("select-all-rows")));const allCheckboxes=new Set([...rowCheckboxes,...filteredParentCheckboxes]);_PbAdvancedTable.selectedRows.clear();allCheckboxes.forEach((checkbox=>{const rowEl=checkbox.closest("tr");const isChecked=checkbox.checked;if(isChecked){_PbAdvancedTable.selectedRows.add(checkbox.id);if(rowEl){rowEl.classList.add("bg-row-selection");rowEl.classList.remove("pb-bg-row-white","bg-silver")}}else{if(rowEl){rowEl.classList.remove("bg-row-selection");if(this.isRowExpanded(rowEl)){rowEl.classList.remove("bg-silver");rowEl.classList.add("pb-bg-row-white")}else{rowEl.classList.remove("pb-bg-row-white");rowEl.classList.add("bg-silver")}}}}));this.updateTableSelectedRowsAttribute();updateSelectionActionBar(this.mainTable,_PbAdvancedTable.selectedRows.size);if(selectAllCheckbox){selectAllCheckbox.checked=Array.from(rowCheckboxes).every((cb=>cb.checked))}}isRowExpanded(rowEl){const closeIcon=rowEl.querySelector(UP_ARROW_SELECTOR);return(closeIcon==null?void 0:closeIcon.style.display)==="none"||!closeIcon}handleCheckboxClick(event){const checkbox=event.currentTarget;const rowId=checkbox.id;const isChecked=checkbox.checked;const rowEl=checkbox.closest("tr");if(isChecked){_PbAdvancedTable.selectedRows.add(rowId);rowEl.classList.add("bg-row-selection");rowEl.classList.remove("pb-bg-row-white","bg-silver")}else{_PbAdvancedTable.selectedRows.delete(rowId)}if(!isChecked){rowEl.classList.remove("bg-row-selection");if(this.isRowExpanded(rowEl)){rowEl.classList.remove("bg-silver");rowEl.classList.add("pb-bg-row-white")}else{rowEl.classList.remove("pb-bg-row-white");rowEl.classList.add("bg-silver")}}this.updateTableSelectedRowsAttribute();const table=this.table;const selectAllCheckbox=table.querySelector("#select-all-rows");if(selectAllCheckbox){const allCheckboxes=table.querySelectorAll("label[data-row-id] input[type='checkbox']");const allChecked=Array.from(allCheckboxes).every((cb=>cb.checked));const selectAllInput=selectAllCheckbox.querySelector('input[type="checkbox"]');selectAllInput.checked=allChecked}updateSelectionActionBar(this.mainTable,_PbAdvancedTable.selectedRows.size)}get target(){return this.childRowsFor(this.element.id)||[]}connect(){const table=this.table;if(!table)return;this.hideCloseIcon();const mainTable=this.mainTable;if(mainTable){updateSelectionActionBar(mainTable)}table.querySelectorAll("tr[data-row-parent]").forEach((row=>{const parentId=row.dataset.rowParent;if(!this.childRowsMap.has(parentId)){this.childRowsMap.set(parentId,[])}this.childRowsMap.get(parentId).push(row)}));if(table.dataset.pbAdvancedTableInitialized)return;table.dataset.pbAdvancedTableInitialized="true";if(mainTable){_PbAdvancedTable.updateStickyHeaderRowHeights(mainTable);const resizeObserver=new ResizeObserver((()=>{_PbAdvancedTable.updateStickyHeaderRowHeights(mainTable);_PbAdvancedTable.updatePinnedRowsStickyTops(mainTable)}));resizeObserver.observe(table);mainTable._advancedTableHeaderResizeObserver=resizeObserver}table.addEventListener("change",(event=>{const checkbox=event.target.closest('input[type="checkbox"]');if(!checkbox)return;if(checkbox.closest("#select-all-rows")){const checkAll=checkbox.checked;const rowCheckboxes=table.querySelectorAll('label[data-row-id] input[type="checkbox"]');rowCheckboxes.forEach((cb=>{if(cb.checked!==checkAll){cb.checked=checkAll;this.handleCheckboxClick({currentTarget:cb})}}));setTimeout((()=>{this.recalculateSelectedCount()}),0);return}const rowLabel=checkbox.closest("label[data-row-id]");if(rowLabel){this.handleCheckboxClick({currentTarget:checkbox});setTimeout((()=>{this.recalculateSelectedCount()}),0)}}));table.addEventListener("checkbox-programmatic-change",(event=>{const checkbox=event.target;if(!checkbox||checkbox.type!=="checkbox")return;const rowLabel=checkbox.closest("label[data-row-id]");if(rowLabel){this.handleCheckboxClick({currentTarget:checkbox})}setTimeout((()=>{this.recalculateSelectedCount()}),10)}));table.addEventListener("change",(event=>{const checkbox=event.target;if(checkbox&&checkbox.type==="checkbox"){setTimeout((()=>{this.recalculateSelectedCount()}),50)}}));table.addEventListener("click",(event=>{const toggleBtn=event.target.closest("[data-advanced-table]");if(!toggleBtn||_PbAdvancedTable.isCollapsing)return;const prevElement=this.element;this.element=toggleBtn;const isExpanded=toggleBtn.querySelector(UP_ARROW_SELECTOR).style.display==="inline-block";if(!isExpanded){_PbAdvancedTable.expandedRows.add(toggleBtn.id)}else{_PbAdvancedTable.expandedRows.delete(toggleBtn.id)}const childRows=this.childRowsFor(toggleBtn.id);this.toggleElement(childRows);this.element=prevElement}));this.addBorderRadiusOnLastVisibleRow()}addBorderRadiusOnLastVisibleRow(){const parentElement=this.mainTable;if(!parentElement)return;const table=document.getElementById(parentElement.id);if(table){const visibleRows=table.querySelectorAll("tr.is-visible, tr:not(.toggle-content)");visibleRows.forEach((row=>{row.classList.remove("last-visible-row");row.classList.remove("last-row-cell")}));const lastVisibleRow=visibleRows[visibleRows.length-1];if(lastVisibleRow){lastVisibleRow.classList.add("last-visible-row");lastVisibleRow.classList.add("last-row-cell")}_PbAdvancedTable.updateStickyHeaderRowHeights(parentElement);_PbAdvancedTable.updatePinnedRowsStickyTops(table)}}static updateStickyHeaderRowHeights(advancedTableWrapper){if(!advancedTableWrapper)return;const table=advancedTableWrapper.querySelector("table.pb_table");const thead=table==null?void 0:table.querySelector("thead");if(!thead)return;const rows=Array.from(thead.querySelectorAll("tr"));let totalHeight=0;rows.forEach(((tr,index)=>{const h=tr.offsetHeight;if(index===0){advancedTableWrapper.style.setProperty("--advanced-table-header-row-0-height",`${h}px`)}else if(index===1){advancedTableWrapper.style.setProperty("--advanced-table-header-row-1-height",`${h}px`)}totalHeight+=h}));advancedTableWrapper.style.setProperty("--advanced-table-header-height",`${totalHeight}px`)}static updatePinnedRowsStickyTops(advancedTableWrapper){const pinnedTbody=advancedTableWrapper==null?void 0:advancedTableWrapper.querySelector("tbody.pinned-rows-tbody");if(!pinnedTbody)return;const pinnedRows=Array.from(pinnedTbody.querySelectorAll("tr.pinned-row"));const visibleRows=pinnedRows.filter((tr=>tr.style.display!=="none"&&tr.offsetParent!==null));const headerOffset="var(--advanced-table-header-height, 44px)";visibleRows.forEach(((tr,index)=>{tr.style.top=`calc(${headerOffset} + 2.5em * ${index})`}))}hideCloseIcon(){const closeIcon=this.element.querySelector(UP_ARROW_SELECTOR);closeIcon.style.display="none"}showElement(elements){elements.forEach((elem=>{elem.style.display="table-row";elem.classList.add("is-visible");const childRowsAll=this.table.querySelectorAll(`[data-advanced-table-content^="${elem.dataset.advancedTableContent}-"]`);childRowsAll.forEach((childRow=>{const dataContent=childRow.dataset.advancedTableContent;if(!dataContent){return}const ancestorIds=dataContent.split("-").slice(0,-1);const parentRowId=childRow.dataset.rowParent;const tableId=parentRowId?parentRowId.split("_").slice(0,-1).join("_"):"";const prefixedAncestorIds=ancestorIds.map((id=>`${tableId}_${id}`));const allAncestorsExpanded=prefixedAncestorIds.every((id=>_PbAdvancedTable.expandedRows.has(id)));const checkIfParentIsExpanded=()=>{if(dataContent.endsWith("sr")){const parentRowId2=childRow.dataset.rowParent;const isParentVisible=childRow.previousElementSibling.classList.contains("is-visible");if(parentRowId2){const isInSet=_PbAdvancedTable.expandedRows.has(parentRowId2);if(isInSet&&isParentVisible){return true}}}return false};if(allAncestorsExpanded||checkIfParentIsExpanded()){childRow.style.display="table-row";childRow.classList.add("is-visible")}else{childRow.style.display="none";childRow.classList.remove("is-visible")}}))}))}hideElement(elements){elements.forEach((elem=>{elem.style.display="none";elem.classList.remove("is-visible");if(_PbAdvancedTable.expandedRows.has(elem.id)){_PbAdvancedTable.expandedRows.delete(elem.id)}const childrenArray=elem.dataset.advancedTableContent.split("-");const currentDepth=parseInt(elem.dataset.rowDepth);if(childrenArray.length>currentDepth){const childRows=this.table.querySelectorAll(`[data-advanced-table-content^="${elem.dataset.advancedTableContent}-"]`);childRows.forEach((childRow=>{childRow.style.display="none";childRow.classList.remove("is-visible")}))}}))}toggleElement(elements){if(!elements.length)return;const isVisible=elements[0].classList.contains("is-visible");const isExpanded=toggleVisibility({isVisible:isVisible,onHide:()=>this.hideElement(elements),onShow:()=>this.showElement(elements)});isExpanded?this.displayUpArrow():this.displayDownArrow();const row=this.element.closest("tr");if(row){row.classList.toggle("bg-silver",isExpanded);row.classList.toggle("pb-bg-row-white",!isExpanded)}this.addBorderRadiusOnLastVisibleRow()}displayDownArrow(){setArrowVisibility({rootElement:this.element,downSelector:DOWN_ARROW_SELECTOR,upSelector:UP_ARROW_SELECTOR,showDownArrow:true})}displayUpArrow(){setArrowVisibility({rootElement:this.element,downSelector:DOWN_ARROW_SELECTOR,upSelector:UP_ARROW_SELECTOR,showDownArrow:false})}static handleToggleAllHeaders(element){const table=element.closest(".pb_table");const firstLevelButtons=table.querySelectorAll(".pb_advanced_table_body > .pb_table_tr[data-row-depth='0'] [data-advanced-table]");const allExpanded=Array.from(firstLevelButtons).every((button=>button.querySelector(UP_ARROW_SELECTOR).style.display==="inline-block"));if(allExpanded){firstLevelButtons.forEach((button=>{button.click();_PbAdvancedTable.expandedRows.delete(button.id)}))}else{firstLevelButtons.forEach((button=>{if(!_PbAdvancedTable.expandedRows.has(button.id)){button.click();_PbAdvancedTable.expandedRows.add(button.id)}}));_PbAdvancedTable.expandedRows.forEach((rowId=>{const nestedButton=table.querySelector(`[data-advanced-table][id="${rowId}"]`);if(nestedButton&&!firstLevelButtons.contains(nestedButton)){nestedButton.click()}}))}}static handleToggleAllSubRows(element,rowDepth){const table=element.closest(".pb_table");const parentRow=element.closest("tr");if(!parentRow){return}const rowParentId=parentRow.dataset.rowParent;const subRowButtons=table.querySelectorAll(`.pb_advanced_table_body > .pb_table_tr[data-row-depth='${rowDepth}'].pb_table_tr[data-row-parent='${rowParentId}'] [data-advanced-table]`);const allExpanded=Array.from(subRowButtons).every((button=>button.querySelector(UP_ARROW_SELECTOR).style.display==="inline-block"));if(allExpanded){subRowButtons.forEach((button=>{button.click();_PbAdvancedTable.expandedRows.delete(button.id)}))}else{subRowButtons.forEach((button=>{if(!_PbAdvancedTable.expandedRows.has(button.id)){button.click();_PbAdvancedTable.expandedRows.add(button.id)}}))}}};__publicField(_PbAdvancedTable,"expandedRows",new Set);__publicField(_PbAdvancedTable,"selectedRows",new Set);__publicField(_PbAdvancedTable,"isCollapsing",false);let PbAdvancedTable=_PbAdvancedTable;window.expandAllRows=element=>{PbAdvancedTable.handleToggleAllHeaders(element)};window.expandAllSubRows=(element,rowDepth)=>{PbAdvancedTable.handleToggleAllSubRows(element,rowDepth)};function updateAllAdvancedTableStickyHeights(){document.querySelectorAll(".pb_advanced_table").forEach((wrapper=>{PbAdvancedTable.updateStickyHeaderRowHeights(wrapper);PbAdvancedTable.updatePinnedRowsStickyTops(wrapper)}))}if(typeof document!=="undefined"){if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",updateAllAdvancedTableStickyHeights)}else{updateAllAdvancedTableStickyHeights()}}const FLAT_SELECTOR="[data-flat-advanced-table-select='true']";class PbFlatAdvancedTable extends PbEnhancedElement{static get selector(){return FLAT_SELECTOR}constructor(...args){super(...args);this.selectedRows=new Set}connect(){const table=this.element.closest("table");if(!table||table.dataset.flatAdvancedInit)return;table.dataset.flatAdvancedInit="true";const mainTable=this.element.closest(".pb_advanced_table");if(mainTable){updateSelectionActionBar(mainTable,0)}const updateCheckboxState=()=>{if(mainTable){mainTable.dataset.selectedRows=JSON.stringify(Array.from(this.selectedRows));updateSelectionActionBar(mainTable,this.selectedRows.size)}};const selectAllId=this.element.getAttribute("data-pb-checkbox-indeterminate-parent");const selectAllSelector=`#${selectAllId} input[type='checkbox']`;table.addEventListener("change",(e=>{const rowCb=e.target.closest(FLAT_SELECTOR+" input[type='checkbox']");const allCb=e.target.closest(selectAllSelector);if(!rowCb&&!allCb)return;if(rowCb){const id=rowCb.id;if(rowCb.checked)this.selectedRows.add(id);else this.selectedRows.delete(id);const tr=rowCb.closest("tr");tr==null?void 0:tr.classList.toggle("bg-row-selection",rowCb.checked);tr==null?void 0:tr.classList.toggle("pb-bg-row-white",!rowCb.checked)}if(allCb){const checked=allCb.checked;Array.from(table.querySelectorAll(FLAT_SELECTOR+" input[type='checkbox']")).forEach((cb=>{cb.checked=checked;const tr=cb.closest("tr");tr==null?void 0:tr.classList.toggle("bg-row-selection",checked);tr==null?void 0:tr.classList.toggle("pb-bg-row-white",!checked);const id=cb.id;if(checked)this.selectedRows.add(id);else this.selectedRows.delete(id)}))}updateCheckboxState()}))}}const NAV_SELECTOR="[data-pb-nav-tab]";const NAV_ITEM_SELECTOR="[data-pb-tab-target]";class PbNav extends PbEnhancedElement{static get selector(){return NAV_SELECTOR}connect(){this.hideAndAddEventListeners()}hideAndAddEventListeners(){const navItems=this.element.querySelectorAll(NAV_ITEM_SELECTOR);navItems.forEach((navItem=>{if(!navItem.className.includes("active")){this.changeContentDisplay(navItem.dataset.pbTabTarget,"none")}navItem.addEventListener("click",(event=>this.handleNavItemClick(event)))}))}handleNavItemClick(event){event.preventDefault();const navItem=event.target.closest(NAV_ITEM_SELECTOR);this.changeContentDisplay(navItem.dataset.pbTabTarget,"block");const navItems=this.element.querySelectorAll(NAV_ITEM_SELECTOR);navItems.forEach((navItemSelected=>{if(navItem!==navItemSelected){this.changeContentDisplay(navItemSelected.dataset.pbTabTarget,"none")}}))}changeContentDisplay(contentId,display){const content=document.getElementById(contentId);content.style.display=display}}const STAR_RATING_WRAPPER_SELECTOR="[data-pb-star-rating-wrapper]";const STAR_RATING_SELECTOR="[data-pb-star-rating]";const STAR_RATING_INPUT_DATA_SELECTOR="[data-pb-star-rating-input]";class PbStarRating extends PbEnhancedElement{static get selector(){return STAR_RATING_WRAPPER_SELECTOR}connect(){this.addEventListeners();this.handleFormReset();this.setDefaultValue()}addEventListeners(){this.element.querySelectorAll(STAR_RATING_SELECTOR).forEach((star=>{star.addEventListener("click",(event=>{const clickedStarId=event.currentTarget.id;this.updateStarColors(clickedStarId);this.updateHiddenInputValue(clickedStarId);this.clearFormValidation()}));star.addEventListener("mouseenter",(event=>{const hoveredStarId=event.currentTarget.id;this.updateStarHoverColors(hoveredStarId)}));star.addEventListener("mouseleave",(()=>{this.removeStarHoverColors()}));star.addEventListener("keydown",(event=>{if(event.key==="Enter"||event.key===" "){event.preventDefault();this.handleStarClick(star.id)}}))}))}handleStarClick(starId){this.updateStarColors(starId);this.updateHiddenInputValue(starId)}updateStarColors(clickedStarId){const allStars=this.element.querySelectorAll(STAR_RATING_SELECTOR);allStars.forEach((star=>{const starId=star.id;const icon=star.querySelector(".interactive-star-icon");if(icon){if(starId<=clickedStarId){if(star.classList.contains("yellow_star")){icon.classList.add("yellow-star-selected")}else if(star.classList.contains("primary_star_light")){icon.classList.add("primary-star-selected")}else if(star.classList.contains("primary_star_dark")){icon.classList.add("primary-star-selected")}else if(star.classList.contains("subtle_star_light")){icon.classList.add("subtle-star-selected")}else if(star.classList.contains("subtle_star_dark")){icon.classList.add("subtle-star-selected")}else{icon.classList.add("yellow-star-selected")}}else{icon.classList.remove("yellow-star-selected","primary-star-selected","subtle-star-selected")}icon.classList.remove("star-hovered")}}))}updateHiddenInputValue(value){const hiddenInput=this.element.querySelector(STAR_RATING_INPUT_DATA_SELECTOR);if(hiddenInput){hiddenInput.value=value}}updateStarHoverColors(hoveredStarId){const allStars=this.element.querySelectorAll(STAR_RATING_SELECTOR);allStars.forEach((star=>{const starId=star.id;const icon=star.querySelector(".interactive-star-icon");if(icon){if(starId<=hoveredStarId){if(!icon.classList.contains("yellow-star-selected")&&!icon.classList.contains("primary-star-selected")&&!icon.classList.contains("subtle-star-selected")){icon.classList.add("star-hovered")}}else{icon.classList.remove("star-hovered")}}}))}removeStarHoverColors(){const allStars=this.element.querySelectorAll(STAR_RATING_SELECTOR);allStars.forEach((star=>{const icon=star.querySelector(".interactive-star-icon");if(icon){if(!icon.classList.contains("yellow-star-selected")&&!icon.classList.contains("primary-star-selected")&&!icon.classList.contains("subtle-star-selected")){icon.classList.remove("star-hovered")}}}))}isStarSelected(){return this.element.querySelectorAll(".yellow-star-selected, .primary-star-selected, .subtle-star-selected").length>0}handleFormReset(){const form=this.element.closest("form");if(form){form.addEventListener("reset",(()=>{var _a;(_a=this.element.querySelector(STAR_RATING_INPUT_DATA_SELECTOR))==null?void 0:_a.setAttribute("value","");this.resetStarRatingValues()}))}}resetStarRatingValues(){const allStars=this.element.querySelectorAll(STAR_RATING_SELECTOR);allStars.forEach((star=>{const icon=star.querySelector(".interactive-star-icon");if(icon){icon.classList.remove("yellow-star-selected","primary-star-selected","subtle-star-selected")}}))}clearFormValidation(){const hiddenInput=this.element.querySelector(STAR_RATING_INPUT_DATA_SELECTOR);if(hiddenInput.checkValidity()){const errorLabelElement=this.element.querySelector(".pb_body_kit_negative");if(errorLabelElement){errorLabelElement.remove()}}}setDefaultValue(){const hiddenInput=this.element.querySelector(STAR_RATING_INPUT_DATA_SELECTOR);const defaultValue=hiddenInput.value;if(defaultValue){this.updateStarColors(defaultValue)}}}const RADIO_SELECTOR="[data-pb-radio-children]";const RADIO_WRAPPER_SELECTOR="[data-pb-radio-children-wrapper]";class PbRadio extends PbEnhancedElement{static get selector(){return RADIO_SELECTOR}connect(){const radioWrapperElement=this.element.parentElement.querySelector(RADIO_WRAPPER_SELECTOR);radioWrapperElement.addEventListener("click",(()=>{this.element.querySelector("input[type='radio']").click()}))}}const DRAGGABLE_SELECTOR="[data-pb-draggable]";const DRAGGABLE_CONTAINER=".pb_draggable_container";const NEEDS_CLONE=["shadow","outline","line"];class PbDraggable extends PbEnhancedElement{static get selector(){return DRAGGABLE_SELECTOR}connect(){this.state={items:[],dragData:{id:"",initialGroup:""},isDragging:"",activeContainer:""};this.draggedItem=null;this.draggedItemId=null;this.dragGhost=null;this.hasMultipleContainers=false;this.dragZoneType="";this.dragZoneColor="";document.addEventListener("DOMContentLoaded",(()=>this.bindEventListeners()))}setState(newState){this.state={...this.state,...newState};if(newState.items){this.element.dispatchEvent(new CustomEvent("pb-draggable-reorder",{detail:{reorderedItems:this.state.items,containerId:this.element.querySelector(DRAGGABLE_CONTAINER).id}}))}}bindEventListeners(){const containers=this.element.querySelectorAll(DRAGGABLE_CONTAINER);this.hasMultipleContainers=containers.length>1;this.element.querySelectorAll(".pb_draggable_item img").forEach((img=>img.setAttribute("draggable","false")));this.element.querySelectorAll(".pb_draggable_item").forEach((item=>{item.addEventListener("dragstart",this.handleDragStart.bind(this));item.addEventListener("dragend",this.handleDragEnd.bind(this));item.addEventListener("dragenter",this.handleDragEnter.bind(this))}));containers.forEach((c=>{c.addEventListener("dragover",this.handleDragOver.bind(this));c.addEventListener("drop",this.handleDrop.bind(this))}))}handleDragStart(event){if(event.target.tagName.toLowerCase()==="img"){event.preventDefault();return}const container=event.target.closest(DRAGGABLE_CONTAINER);this.draggedItem=event.target;this.draggedItemId=event.target.id;this.dragZoneType=this.element.dataset.dropZoneType||"";this.dragZoneColor=this.element.dataset.dropZoneColor||"";this.setState({dragData:{id:this.draggedItemId,initialGroup:container.id},isDragging:this.draggedItemId});this.draggedItem.classList.add("is_dragging",`drop_zone_${this.dragZoneType}`,`drop_zone_color_${this.dragZoneColor}`);if(event.dataTransfer){event.dataTransfer.effectAllowed="move";event.dataTransfer.setData("text/plain",this.draggedItemId);if(NEEDS_CLONE.includes(this.dragZoneType)){const ghost=this.draggedItem.cloneNode(true);ghost.classList.remove("is_dragging",`drop_zone_${this.dragZoneType}`,`drop_zone_color_${this.dragZoneColor}`);const{width:width,height:height}=this.draggedItem.getBoundingClientRect();Object.assign(ghost.style,{border:"none",width:`${width}px`,height:`${height}px`,position:"absolute",top:"-9999px",left:"-9999px",boxSizing:"border-box",zIndex:"9999"});document.body.appendChild(ghost);this.dragGhost=ghost;event.dataTransfer.setDragImage(ghost,width/2,height/2)}}if(this.dragZoneType!=="line"){requestAnimationFrame((()=>event.target.style.opacity="0.5"))}}handleDragEnter(event){if(!this.draggedItem||event.target===this.draggedItem)return;this.hasMultipleContainers?this.handleMultiContainerDragEnter(event):this.handleSingleContainerDragEnter(event)}handleSingleContainerDragEnter(event){const targetItem=event.target.closest(".pb_draggable_item");if(!targetItem)return;const container=targetItem.parentNode;const items=Array.from(container.children);const fromIdx=items.indexOf(this.draggedItem);const toIdx=items.indexOf(targetItem);if(fromIdx>toIdx){container.insertBefore(this.draggedItem,targetItem)}else{container.insertBefore(this.draggedItem,targetItem.nextSibling)}}handleMultiContainerDragEnter(event){const targetContainer=event.target.closest(DRAGGABLE_CONTAINER);const targetItem=event.target.closest(".pb_draggable_item");if(!targetContainer)return;if(!targetItem){const last=targetContainer.querySelector(".pb_draggable_item:last-child");last?targetContainer.insertBefore(this.draggedItem,last.nextSibling):targetContainer.appendChild(this.draggedItem);return}const items=Array.from(targetContainer.children);this.setState({items:items.map((i=>({id:i.id,container:targetContainer.id})))});const midY=targetItem.getBoundingClientRect().top+targetItem.getBoundingClientRect().height/2;if(event.clientY<midY){targetContainer.insertBefore(this.draggedItem,targetItem)}else{targetContainer.insertBefore(this.draggedItem,targetItem.nextSibling)}}handleDragOver(event){event.preventDefault();event.stopPropagation();this.hasMultipleContainers?this.handleMultiContainerDragOver(event):this.handleSingleContainerDragOver(event)}handleSingleContainerDragOver(event){const container=event.target.closest(DRAGGABLE_CONTAINER);if(container)container.classList.add("active_container")}handleMultiContainerDragOver(event){const container=event.target.matches(DRAGGABLE_CONTAINER)?event.target:event.target.closest(DRAGGABLE_CONTAINER);if(!container)return;this.setState({activeContainer:container.id});container.classList.add("active_container");const last=container.querySelector(".pb_draggable_item:last-child");if(!last||event.clientY>last.getBoundingClientRect().bottom){if(this.draggedItem&&this.draggedItem.parentNode!==container){container.appendChild(this.draggedItem)}}}handleDrop(event){event.preventDefault();event.stopPropagation();const container=event.target.matches(DRAGGABLE_CONTAINER)?event.target:event.target.closest(DRAGGABLE_CONTAINER);if(!container||!this.draggedItem)return;container.classList.remove("active_container");this.draggedItem.style.opacity="1";if(this.hasMultipleContainers&&!container.querySelector(".pb_draggable_item")){container.appendChild(this.draggedItem)}const reorderedItems=Array.from(this.element.querySelectorAll(".pb_draggable_item")).map((i=>({id:i.id,container:i.closest(DRAGGABLE_CONTAINER).id})));container.dataset.reorderedItems=JSON.stringify(reorderedItems);this.element.dispatchEvent(new CustomEvent("pb-draggable-reorder",{detail:{reorderedItems:reorderedItems,containerId:container.id}}));this.setState({items:reorderedItems,isDragging:"",activeContainer:""});this.draggedItem=null;this.draggedItemId=null}handleDragEnd(event){event.target.classList.remove("is_dragging",`drop_zone_${this.dragZoneType}`,`drop_zone_color_${this.dragZoneColor}`);event.target.style.opacity="1";if(this.dragGhost){document.body.removeChild(this.dragGhost);this.dragGhost=null}this.setState({isDragging:"",activeContainer:""});this.element.querySelectorAll(DRAGGABLE_CONTAINER).forEach((c=>c.classList.remove("active_container")));this.draggedItem=null;this.draggedItemId=null}}const OVERLAY_SELECTOR="[data-pb-overlay]";const OVERLAY_SCROLL_ELEMENT="[data-overlay-scroll-element]";const PREVIOUS_OVERLAY_CLASSNAME="[data-previous-overlay-classname]";const SUBSEQUENT_OVERLAY_CLASSNAME="[data-subsequent-overlay-classname]";class PbOverlay extends PbEnhancedElement{static get selector(){return OVERLAY_SELECTOR}get target(){return this.element.querySelector(OVERLAY_SCROLL_ELEMENT).children[0]}connect(){this.handleOverlayDynamic()}handleOverlayDynamic(){var _a,_b,_c;const isOverlayDynamic=(_a=this.element.dataset)==null?void 0:_a.overlayDynamic;if(isOverlayDynamic){const previousOverlayElement=this.element.querySelector(PREVIOUS_OVERLAY_CLASSNAME);const previousOverlayClassname=(_b=previousOverlayElement==null?void 0:previousOverlayElement.dataset)==null?void 0:_b.previousOverlayClassname;const subsequentOverlayElement=this.element.querySelector(SUBSEQUENT_OVERLAY_CLASSNAME);const subsequentOverlayClassname=(_c=subsequentOverlayElement==null?void 0:subsequentOverlayElement.dataset)==null?void 0:_c.subsequentOverlayClassname;const handleScrollChange=target=>{const{scrollLeft:scrollLeft,scrollWidth:scrollWidth,clientWidth:clientWidth}=target;const isScrollAtStart=scrollLeft===0;const isScrollAtEnd=scrollLeft+clientWidth>=scrollWidth-1;if(isScrollAtStart){previousOverlayElement.classList.remove(previousOverlayClassname)}else{previousOverlayElement.classList.add(previousOverlayClassname)}if(isScrollAtEnd){subsequentOverlayElement.classList.remove(subsequentOverlayClassname)}else{subsequentOverlayElement.classList.add(subsequentOverlayClassname)}};this.target.addEventListener("scroll",(event=>{handleScrollChange(event.target)}));handleScrollChange(this.target)}}disconnect(){var _a;if((_a=this.element.dataset)==null?void 0:_a.overlayDynamic){this.target.removeEventListener("scroll")}}}const SELECT_WRAPPER_SELECTOR="[data-pb-select]";const SELECT_VALIDATION_MESSAGE_CLASS$1=".pb_body_kit_negative";class PbSelect extends PbEnhancedElement{static get selector(){return SELECT_WRAPPER_SELECTOR}connect(){this.setValidationMessage()}setValidationMessage(){var _a;const validationMessage=(_a=this.element.dataset)==null?void 0:_a.validationMessage;if(validationMessage){const selectElement=this.element.querySelector("select");const setErrorTextContent=(text,timeout)=>{setTimeout((()=>{const errorMessageElement=this.element.querySelector(SELECT_VALIDATION_MESSAGE_CLASS$1);if(errorMessageElement){errorMessageElement.textContent=text}else{setErrorTextContent(text,100)}}),timeout)};selectElement.addEventListener("change",(e=>{if(!e.target.checkValidity()){setErrorTextContent(validationMessage,300)}}))}}}const DIALOG_WRAPPER_SELECTOR="[data-pb-dialog-wrapper]";class PbDialog extends PbEnhancedElement{constructor(){super(...arguments);__publicField(this,"handleCustomEvent",(event=>{var _a,_b,_c,_d,_e,_f;const dialogId=((_a=event.detail)==null?void 0:_a.dialogId)||((_b=this.element.querySelector("dialog"))==null?void 0:_b.id);const dialog=dialogId&&document.getElementById(dialogId);if(!dialog){console.warn(`[PbDialog] Could not find dialog with ID '${dialogId}'`);return}this.setupDialog();const action=((_c=event.detail)==null?void 0:_c.action)||"open";const knownActions=["open","close","clickConfirm","clickCancel"];if(knownActions.includes(action)){switch(action){case"open":if(!dialog.open)dialog.showModal();break;case"close":if(dialog.open)dialog.close((_d=event.detail)==null?void 0:_d.returnValue);break;case"clickConfirm":this.triggerButtonClick(dialog,event,"confirm");break;case"clickCancel":this.triggerButtonClick(dialog,event,"cancel");break}}else if(typeof((_e=event.detail)==null?void 0:_e.customAction)==="function"){event.detail.customAction({dialog:dialog,event:event})}else if((_f=window.pbDialogActions)==null?void 0:_f[action]){window.pbDialogActions[action]({dialog:dialog,event:event})}else{console.warn(`[PbDialog] Unknown action: ${action}`)}}))}static get selector(){return DIALOG_WRAPPER_SELECTOR}connect(){var _a;this.dialogElement=this.element.querySelector(".pb_dialog_rails");this.dialogId=(_a=this.dialogElement)==null?void 0:_a.id;this.managedTriggers=new Set;this.domContentLoadedHandler=()=>this.setupDialog();this.turboFrameLoadHandler=()=>this.setupDialog();window.addEventListener("DOMContentLoaded",this.domContentLoadedHandler);window.addEventListener("turbo:frame-load",this.turboFrameLoadHandler);const customEventTypeString=this.element.dataset.customEventType;if(customEventTypeString&&!this.element.hasAttribute("data-custom-event-handled")){this.customEventTypes=customEventTypeString.split(",").map((e=>e.trim())).filter(Boolean);this.customEventTypes.forEach((eventType=>{window.addEventListener(eventType,this.handleCustomEvent)}));this.element.setAttribute("data-custom-event-handled","true")}}disconnect(){if(this.domContentLoadedHandler){window.removeEventListener("DOMContentLoaded",this.domContentLoadedHandler)}if(this.turboFrameLoadHandler){window.removeEventListener("turbo:frame-load",this.turboFrameLoadHandler)}if(this.customEventTypes&&Array.isArray(this.customEventTypes)){this.customEventTypes.forEach((eventType=>{window.removeEventListener(eventType,this.handleCustomEvent)}))}this.managedTriggers.forEach((trigger=>{if(trigger._openDialogClickHandler){trigger.removeEventListener("click",trigger._openDialogClickHandler);delete trigger._openDialogClickHandler}if(trigger._closeDialogClickHandler){trigger.removeEventListener("click",trigger._closeDialogClickHandler);delete trigger._closeDialogClickHandler}}));if(this.dialogElement&&this.dialogElement._outsideClickHandler){this.dialogElement.removeEventListener("mousedown",this.dialogElement._outsideClickHandler);delete this.dialogElement._outsideClickHandler}}triggerButtonClick(dialog,event,type){var _a,_b;const buttonId=((_a=event.detail)==null?void 0:_a[`${type}ButtonId`])||((_b=dialog.closest("[data-pb-dialog-wrapper]"))==null?void 0:_b.dataset[`${type}ButtonId`]);const button=buttonId?document.getElementById(buttonId):dialog.querySelector(`[data-${type}-button]`);if(button){button.click()}else{console.warn(`[PbDialog] Could not find ${type} button for dialog`)}}setupDialog(){if(!this.dialogId)return;const openTrigger=document.querySelectorAll(`[data-open-dialog="${this.dialogId}"]`);const closeTrigger=document.querySelectorAll(`[data-close-dialog="${this.dialogId}"]`);const dialogs=this.dialogElement?[this.dialogElement]:[];const loadingButton=document.querySelector('[data-disable-with="Loading"]');if(loadingButton&&!loadingButton.dataset.listenerAttached){loadingButton.addEventListener("click",(function(){const okayLoadingButton=document.querySelector('[data-disable-with="Loading"]');const cancelButton=document.querySelector('[data-disable-cancel-with="Loading"]');let currentClass=okayLoadingButton.className;let cancelClass=cancelButton?cancelButton.className:"";let newClass=currentClass.replace("_enabled","_disabled_loading");let newCancelClass=cancelClass.replace("_enabled","_disabled");okayLoadingButton.disabled=true;if(cancelButton)cancelButton.disabled=true;okayLoadingButton.className=newClass;if(cancelButton)cancelButton.className=newCancelClass}));loadingButton.dataset.listenerAttached="true"}openTrigger.forEach((open=>{const originalClickHandler=open._openDialogClickHandler;if(originalClickHandler)open.removeEventListener("click",originalClickHandler);open._openDialogClickHandler=()=>{const openTriggerData=open.dataset.openDialog;const targetDialogOpen=document.getElementById(openTriggerData);if(targetDialogOpen&&!targetDialogOpen.open)targetDialogOpen.showModal()};open.addEventListener("click",open._openDialogClickHandler);this.managedTriggers.add(open)}));closeTrigger.forEach((close=>{const originalClickHandler=close._closeDialogClickHandler;if(originalClickHandler)close.removeEventListener("click",originalClickHandler);close._closeDialogClickHandler=()=>{const closeTriggerData=close.dataset.closeDialog;const targetDialogClose=document.getElementById(closeTriggerData);if(targetDialogClose)targetDialogClose.close()};close.addEventListener("click",close._closeDialogClickHandler);this.managedTriggers.add(close)}));dialogs.forEach((dialogElement=>{const originalMousedownHandler=dialogElement._outsideClickHandler;if(originalMousedownHandler)dialogElement.removeEventListener("mousedown",originalMousedownHandler);dialogElement._outsideClickHandler=event=>{const dialogParentDataset=dialogElement.parentElement.dataset;if(dialogParentDataset.overlayClick==="overlay_close")return;const dialogModal=event.target.getBoundingClientRect();const clickedOutsideDialogModal=event.clientX<dialogModal.left||event.clientX>dialogModal.right||event.clientY<dialogModal.top||event.clientY>dialogModal.bottom;if(clickedOutsideDialogModal){dialogElement.close();event.stopPropagation()}};dialogElement.addEventListener("mousedown",dialogElement._outsideClickHandler)}))}}const DATE_PICKER_WRAPPER_SELECTOR="[data-pb-date-picker]";const SELECT_VALIDATION_MESSAGE_CLASS=".pb_body_kit_negative";class PbDatePicker extends PbEnhancedElement{static get selector(){return DATE_PICKER_WRAPPER_SELECTOR}connect(){this.setValidationMessage()}setValidationMessage(){var _a;const validationMessage=(_a=this.element.dataset)==null?void 0:_a.validationMessage;const inputElement=this.element.querySelector("input");if(validationMessage){const setErrorTextContent=(text,timeout)=>{setTimeout((()=>{const errorMessageElement=this.element.querySelector(SELECT_VALIDATION_MESSAGE_CLASS);if(errorMessageElement){errorMessageElement.textContent=text}else{setErrorTextContent(text,100)}}),timeout)};inputElement.addEventListener("change",(e=>{if(!e.target.checkValidity()){setErrorTextContent(validationMessage,300)}}))}}}const MULTI_LEVEL_SELECT_SELECTOR="[data-multi_level_select_form]";class PbMultiLevelSelect extends PbEnhancedElement{static get selector(){return MULTI_LEVEL_SELECT_SELECTOR}get target(){return this.element.querySelector(".pb_body_kit_negative")}connect(){this.addEventListeners();this.observeHiddenInputs();this.observeRogueErrorInsideInnerContainer()}addEventListeners(){const inputElement=this.element.querySelector("input");inputElement.addEventListener("invalid",(()=>{this.handleErrorLabel(300)}));inputElement.addEventListener("blur",(()=>{this.justBlurred=true;setTimeout((()=>{this.justBlurred=false}),300)}))}handleErrorLabel(delay){setTimeout((()=>{const errorLabelElement=this.target;const wrapper=this.element.querySelector(".wrapper");if(errorLabelElement){errorLabelElement.remove();if(wrapper){if(wrapper.querySelector(".pb_body_kit_negative")){wrapper.querySelector(".pb_body_kit_negative").remove()}wrapper.appendChild(errorLabelElement)}this.element.classList.add("error")}else{this.handleErrorLabel(100)}}),delay)}observeHiddenInputs(){const container=this.element.querySelector(".input_inner_container");if(!container)return;this.mutationObserver=new MutationObserver((()=>{const hiddenInputs=container.querySelectorAll('input[type="hidden"]');if(hiddenInputs.length>0){this.clearError()}}));this.mutationObserver.observe(container,{childList:true})}observeRogueErrorInsideInnerContainer(){const container=this.element.querySelector(".input_inner_container");this.rogueErrorObserver=new MutationObserver((mutations=>{for(const mutation of mutations){for(const node of mutation.addedNodes){if(node.nodeType===Node.ELEMENT_NODE&&node.classList.contains("pb_body_kit_negative")){if(this.justBlurred){node.remove()}}}}}));this.rogueErrorObserver.observe(container,{childList:true,subtree:true})}clearError(e){const errorLabelElement=this.target;if(errorLabelElement){errorLabelElement.remove();this.element.classList.remove("error");this.element.querySelector("input").value=e.detail.value}}}const INDETERMINATE_MAIN_CHECKBOX_SELECTOR="[data-pb-checkbox-indeterminate-main='true']";class PbCheckbox extends PbEnhancedElement{static get selector(){return INDETERMINATE_MAIN_CHECKBOX_SELECTOR}connect(){const mainCheckboxWrapper=this.element;const mainCheckbox=mainCheckboxWrapper.querySelector("input");const directChildCheckboxes=document.querySelectorAll(`[data-pb-checkbox-indeterminate-parent="${this.element.id}"] input[type="checkbox"]`);const getAllDescendantCheckboxes=()=>{const descendants=[];const queue=[...directChildCheckboxes];while(queue.length>0){const checkbox=queue.shift();descendants.push(checkbox);const checkboxWrapper=checkbox.closest('[data-pb-checkbox-indeterminate-main="true"]');if(checkboxWrapper){const childCheckboxes=document.querySelectorAll(`[data-pb-checkbox-indeterminate-parent="${checkboxWrapper.id}"] input[type="checkbox"]`);queue.push(...childCheckboxes)}}const nonMainChildCheckboxes=document.querySelectorAll(`[data-pb-checkbox-indeterminate-parent="${this.element.id}"] input[type="checkbox"]`);nonMainChildCheckboxes.forEach((cb=>{if(!descendants.includes(cb)){descendants.push(cb)}}));return descendants};const getCheckboxState=checkboxes=>{const checkedCount=checkboxes.filter((cb=>cb.checked)).length;const totalCount=checkboxes.length;return{allChecked:checkedCount===totalCount,noneChecked:checkedCount===0,indeterminate:!(checkedCount===totalCount||checkedCount===0),checkedCount:checkedCount,totalCount:totalCount}};const updateCheckboxVisualState=(checkbox,isIndeterminate,isChecked)=>{checkbox.indeterminate=isIndeterminate;checkbox.checked=isChecked};const updateCheckboxLabelAndIcons=(wrapper,isIndeterminate,checkedCount)=>{const checkAllLabel=wrapper.dataset.pbCheckboxIndeterminateMainLabelCheck??"Check All";const uncheckAllLabel=wrapper.dataset.pbCheckboxIndeterminateMainLabelUncheck??"Uncheck All";const text=checkedCount===0?checkAllLabel:uncheckAllLabel;const bodyKitElement=wrapper.getElementsByClassName("pb_body_kit")[0];if(bodyKitElement){bodyKitElement.textContent=text}const iconSpan=wrapper.querySelector("[data-pb-checkbox-icon-span]");if(iconSpan){const iconClassToAdd=isIndeterminate?"pb_checkbox_indeterminate":"pb_checkbox_checkmark";const iconClassToRemove=isIndeterminate?"pb_checkbox_checkmark":"pb_checkbox_indeterminate";iconSpan.classList.add(iconClassToAdd);iconSpan.classList.remove(iconClassToRemove)}const indeterminateIcon=wrapper.getElementsByClassName("indeterminate_icon")[0];const checkIcon=wrapper.getElementsByClassName("check_icon")[0];if(indeterminateIcon){indeterminateIcon.classList.toggle("hidden",!isIndeterminate)}if(checkIcon){checkIcon.classList.toggle("hidden",isIndeterminate)}};const updateMainCheckbox=()=>{const allDescendantCheckboxes2=getAllDescendantCheckboxes();const state=getCheckboxState(allDescendantCheckboxes2);updateCheckboxVisualState(mainCheckbox,state.indeterminate,state.allChecked);updateCheckboxLabelAndIcons(mainCheckboxWrapper,state.indeterminate,state.checkedCount)};const updateParentCheckboxes=()=>{const parentId=mainCheckboxWrapper.dataset.pbCheckboxIndeterminateParent;if(parentId){const parentCheckbox=document.getElementById(parentId);if(parentCheckbox){const parentWrapper=parentCheckbox.closest('[data-pb-checkbox-indeterminate-main="true"]');if(parentWrapper){const parentInstance=parentWrapper.pbCheckboxInstance;if(parentInstance&&parentInstance.updateMainCheckbox){parentInstance.updateMainCheckbox();parentInstance.updateParentCheckboxes()}}}}};const setupNonMainCheckboxUpdates=()=>{const allCheckboxesWithChildren=document.querySelectorAll('input[type="checkbox"]');allCheckboxesWithChildren.forEach((cb=>{const checkboxWrapper=cb.closest('[data-pb-checkbox-indeterminate-main="true"]');if(checkboxWrapper&&checkboxWrapper!==mainCheckboxWrapper){return}const childCheckboxes=document.querySelectorAll(`[data-pb-checkbox-indeterminate-parent="${cb.id}"] input[type="checkbox"]`);if(childCheckboxes.length>0){childCheckboxes.forEach((childCb=>{childCb.addEventListener("change",(()=>{const state=getCheckboxState(Array.from(childCheckboxes));updateCheckboxVisualState(cb,state.indeterminate,state.allChecked);const mainCheckboxes=document.querySelectorAll('[data-pb-checkbox-indeterminate-main="true"]');mainCheckboxes.forEach((mainCb=>{const mainInstance=mainCb.pbCheckboxInstance;if(mainInstance&&mainInstance.updateMainCheckbox){setTimeout((()=>{mainInstance.updateMainCheckbox()}),0)}}))}))}))}}))};updateMainCheckbox();mainCheckbox.addEventListener("change",(function(){const allDescendantCheckboxes2=getAllDescendantCheckboxes();const state=getCheckboxState(allDescendantCheckboxes2);if(state.indeterminate){allDescendantCheckboxes2.forEach((cb=>{cb.checked=false;cb.dispatchEvent(new Event("checkbox-programmatic-change",{bubbles:true}))}));this.checked=false}else{allDescendantCheckboxes2.forEach((cb=>{cb.checked=this.checked;cb.dispatchEvent(new Event("checkbox-programmatic-change",{bubbles:true}))}))}updateMainCheckbox();setTimeout((()=>{updateParentCheckboxes()}),0);triggerAllMainCheckboxUpdates()}));directChildCheckboxes.forEach((cb=>{cb.addEventListener("change",updateMainCheckbox)}));const allDescendantCheckboxes=getAllDescendantCheckboxes();allDescendantCheckboxes.forEach((cb=>{if(!Array.from(directChildCheckboxes).includes(cb)){cb.addEventListener("change",updateMainCheckbox)}}));const allChildCheckboxes=document.querySelectorAll(`[data-pb-checkbox-indeterminate-parent="${this.element.id}"] input[type="checkbox"]`);allChildCheckboxes.forEach((cb=>{if(!allDescendantCheckboxes.includes(cb)){cb.addEventListener("change",updateMainCheckbox)}}));let updateTimeout=null;const triggerAllMainCheckboxUpdates=()=>{if(updateTimeout){clearTimeout(updateTimeout)}updateTimeout=setTimeout((()=>{const mainCheckboxes=document.querySelectorAll('[data-pb-checkbox-indeterminate-main="true"]');mainCheckboxes.forEach((mainCb=>{const mainInstance=mainCb.pbCheckboxInstance;if(mainInstance&&mainInstance.updateMainCheckbox){mainInstance.updateMainCheckbox()}}))}),10)};const originalUpdateMainCheckbox=updateMainCheckbox;const enhancedUpdateMainCheckbox=()=>{originalUpdateMainCheckbox();triggerAllMainCheckboxUpdates()};mainCheckboxWrapper.pbCheckboxInstance={updateMainCheckbox:enhancedUpdateMainCheckbox,updateParentCheckboxes:updateParentCheckboxes};setupNonMainCheckboxUpdates()}}const BUTTON_SELECTOR="[data-pb-button-managed]";class PbButton extends PbEnhancedElement{static get selector(){return BUTTON_SELECTOR}connect(){this._attrManaged=this._attributesPresent();this.element._pbButton=this;this._onClick=e=>{if(this.isDisabled()){e.preventDefault();e.stopImmediatePropagation()}};this.element.addEventListener("click",this._onClick,true);if(this._attrManaged)this._syncClassesFromAttributes();this._observer=new MutationObserver((()=>{this._attrManaged=true;this._syncClassesFromAttributes()}));this._observer.observe(this.element,{attributes:true,attributeFilter:["disabled","aria-disabled"]})}disconnect(){var _a;this.element.removeEventListener("click",this._onClick,true);(_a=this._observer)==null?void 0:_a.disconnect();delete this.element._pbButton}disable(){this.setDisabled(true)}enable(){this.setDisabled(false)}setDisabled(state){if(this._isButton()){state?this.element.setAttribute("disabled","disabled"):this.element.removeAttribute("disabled")}else{state?this.element.setAttribute("aria-disabled","true"):this.element.removeAttribute("aria-disabled")}this._attrManaged=true;this._applyClassState(state)}isDisabled(){if(this._isButton()){if(this.element.hasAttribute("disabled"))return true;if(this._attrManaged&&!this.element.hasAttribute("disabled"))return false}else{const aria=this.element.getAttribute("aria-disabled");if(aria==="true")return true;if(this._attrManaged&&aria!=="true")return false}return this.element.classList.contains("pb_button_disabled")}_isButton(){return this.element.tagName==="BUTTON"}_attributesPresent(){return this.element.hasAttribute("disabled")||this.element.hasAttribute("aria-disabled")}_syncClassesFromAttributes(){const state=this._attrDisabledState();const disabled=state===null?false:state;this._applyClassState(disabled)}_attrDisabledState(){if(this._isButton()){return this.element.hasAttribute("disabled")?true:null}else{const aria=this.element.getAttribute("aria-disabled");if(aria==="true")return true;if(aria==="false")return false;return this.element.hasAttribute("aria-disabled")?false:null}}_applyClassState(disabled){this.element.classList.toggle("pb_button_disabled",!!disabled);this.element.classList.toggle("pb_button_enabled",!disabled)}}const TIME_PICKER_SELECTOR="[data-pb-time-picker]";const VALIDATION_MESSAGE_CLASS=".pb_body_kit_negative";class PbTimePicker extends PbEnhancedElement{static get selector(){return TIME_PICKER_SELECTOR}connect(){this.setValidationMessage()}setValidationMessage(){var _a;const element=this.element;const validationMessage=(_a=element.dataset)==null?void 0:_a.validationMessage;const inputElement=element.querySelector("input");if(validationMessage){const setErrorTextContent=(text,timeout)=>{setTimeout((()=>{const errorMessageElement=element.querySelector(VALIDATION_MESSAGE_CLASS);if(errorMessageElement){errorMessageElement.textContent=text}else{setErrorTextContent(text,100)}}),timeout)};inputElement==null?void 0:inputElement.addEventListener("change",(e=>{const target=e.target;if(!target.checkValidity()){setErrorTextContent(validationMessage,300)}}))}}}const KIT_SELECTOR='[class^="pb_"][class*="_kit"]';const ERROR_MESSAGE_SELECTOR=".pb_body_kit_negative";const FORM_SELECTOR='form[data-pb-form-validation="true"]';const REQUIRED_FIELDS_SELECTOR="input[required],textarea[required],select[required]";const PHONE_NUMBER_VALIDATION_ERROR_SELECTOR='[data-pb-phone-validation-error="true"]';const FIELD_EVENTS=["change","valid","invalid"];class PbFormValidation extends PbEnhancedElement{static get selector(){return FORM_SELECTOR}connect(){this.formValidationFields.forEach((field=>{const isPhoneNumberInput=field.closest(".pb_phone_number_input");if(isPhoneNumberInput)return;const isTimePickerInput=field.closest(".pb_time_picker");if(isTimePickerInput)return;FIELD_EVENTS.forEach((e=>{field.addEventListener(e,debounce((event=>{this.validateFormField(event)}),250),false)}))}));this.element.addEventListener("submit",(event=>{setTimeout((()=>{if(this.hasPhoneNumberValidationErrors()){event.preventDefault();return false}}),0)}))}validateFormField(event){event.preventDefault();const{target:target}=event;target.setCustomValidity("");const isValid=event.target.validity.valid;if(isValid){this.clearError(target)}else{this.showValidationMessage(target)}}showValidationMessage(target){const{parentElement:parentElement}=target;const kitElement=parentElement.closest(KIT_SELECTOR);if(!kitElement)return;const isPhoneNumberInput=kitElement.classList.contains("pb_phone_number_input");const isTimePickerInput=kitElement.classList.contains("pb_time_picker");this.clearError(target);kitElement.classList.add("error");if(!isPhoneNumberInput&&!isTimePickerInput){const errorMessageContainer=this.errorMessageContainer;if(target.dataset.message)target.setCustomValidity(target.dataset.message);errorMessageContainer.innerHTML=target.validationMessage;parentElement.appendChild(errorMessageContainer)}}clearError(target){const{parentElement:parentElement}=target;const kitElement=parentElement.closest(KIT_SELECTOR);if(kitElement)kitElement.classList.remove("error");const errorMessageContainer=parentElement.querySelector(ERROR_MESSAGE_SELECTOR);if(errorMessageContainer)errorMessageContainer.remove()}hasPhoneNumberValidationErrors(){const phoneNumberErrors=this.element.querySelectorAll(PHONE_NUMBER_VALIDATION_ERROR_SELECTOR);return phoneNumberErrors.length>0}get errorMessageContainer(){const errorContainer=document.createElement("div");const kitClassName=ERROR_MESSAGE_SELECTOR.replace(/\./,"");errorContainer.classList.add(kitClassName);return errorContainer}get formValidationFields(){return this._formValidationFields=this._formValidationFields||this.element.querySelectorAll(REQUIRED_FIELDS_SELECTOR)}}window.PbFormValidation=PbFormValidation;const kits=[PbTextInput,PbCopyButton,PbCollapsible,PbPopover,PbTooltip,PbFixedConfirmationToast,PbTypeahead,PbTable,PbTextarea,PbDropdown,PbAdvancedTable,PbFlatAdvancedTable,PbNav,PbStarRating,PbRadio,PbDraggable,PbOverlay,PbSelect,PbDialog,PbDatePicker,PbMultiLevelSelect,PbCheckbox,PbButton,PbTimePicker];kits.forEach((kit=>PbKitRegistry$1.register(kit)));PbKitRegistry$1.start();addCopyEventListeners();window.formHelper=formHelper;window.datePickerHelper=datePickerHelper;
1
+ var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:true,configurable:true,writable:true,value:value}):obj[key]=value;var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!=="symbol"?key+"":key,value);import{P as PbEnhancedElement,s as stripEmojisForPaste,a as applyEmojiMask,d as debounce,b as PbPopover,e as PbTooltip,h as PbTypeahead,i as PbTable,j as PbTextarea,k as formHelper,l as datePickerHelper}from"./chunks/lib-o4u12zAw.js";import{I as INPUTMASKS}from"./chunks/_typeahead-BYUXg9ZT.js";import"./chunks/lazysizes-B7xYodB-.js";import"./playbook-rails-react-bindings.js";import"react";import"react/jsx-runtime";import"./chunks/globalProps-6Hsm3bJX.js";import"react-dom";import"react-is";import"./chunks/componentRegistry-DRSp5D_e.js";class PbKitRegistry{constructor(){this.kits=new Map;this.mutationObserver=null;this.initialized=false;this.queued=false;this.pendingMutations=[]}static getInstance(){if(!PbKitRegistry.instance){PbKitRegistry.instance=new PbKitRegistry}return PbKitRegistry.instance}register(kit){const selector=kit.selector;if(!selector){console.warn("[PbKitRegistry] Kit missing selector:",kit.name);return}const list=this.kits.get(selector)||[];list.push(kit);this.kits.set(selector,list)}start(){if(this.initialized)return;this.initialized=true;const target=document.documentElement||document;this.mutationObserver=new MutationObserver((muts=>this.onMutations(muts)));this.mutationObserver.observe(target,{childList:true,subtree:true});this.scan(document)}stop(){var _a;if(!this.initialized)return;(_a=this.mutationObserver)==null?void 0:_a.disconnect();this.mutationObserver=null;this.kits.forEach((kitsForSelector=>{kitsForSelector.forEach((kit=>{if(!kit.elements)return;const els=Array.from(kit.elements.keys());els.forEach((el=>kit.removeMatch(el)))}))}));this.pendingMutations=[];this.queued=false;this.initialized=false}onMutations(muts){this.pendingMutations.push(...muts);if(this.queued)return;this.queued=true;requestAnimationFrame((()=>{this.queued=false;const batch=this.pendingMutations;this.pendingMutations=[];this.processMutations(batch)}))}processMutations(mutations){const addedRoots=[];for(const mutation of mutations){if(mutation.type!=="childList")continue;mutation.addedNodes.forEach((node=>{if(node.nodeType===Node.ELEMENT_NODE){addedRoots.push(node)}}))}if(addedRoots.length){for(const root of addedRoots){this.scan(root)}}this.cleanupDisconnected()}scan(root){this.kits.forEach(((kitsForSelector,selector)=>{var _a;let matches;try{matches=root.querySelectorAll?root.querySelectorAll(selector):document.querySelectorAll(selector)}catch(error){console.debug(`[PbKitRegistry] Invalid selector "${selector}"`,error);return}if(matches&&matches.length){matches.forEach((el=>{kitsForSelector.forEach((kit=>kit.addMatch(el)))}))}if((_a=root.matches)==null?void 0:_a.call(root,selector)){kitsForSelector.forEach((kit=>kit.addMatch(root)))}}))}cleanupDisconnected(){this.kits.forEach((kitsForSelector=>{kitsForSelector.forEach((kit=>{if(!kit.elements)return;const els=Array.from(kit.elements.keys());for(const el of els){if(!el.isConnected){kit.removeMatch(el)}}}))}))}getRegisteredSelectors(){return Array.from(this.kits.keys())}rescan(root=document){if(!this.initialized)return;this.scan(root)}}const PbKitRegistry$1=PbKitRegistry.getInstance();class PbTextInput extends PbEnhancedElement{static get selector(){return'[data-pb-input-mask="true"], [data-pb-emoji-mask="true"]'}connect(){this.handleInput=this.handleInput.bind(this);this.handlePaste=this.handlePaste.bind(this);this.element.addEventListener("input",this.handleInput);this.element.addEventListener("paste",this.handlePaste);this.handleInput()}disconnect(){this.element.removeEventListener("input",this.handleInput);this.element.removeEventListener("paste",this.handlePaste)}hasEmojiMask(){return this.element.dataset.pbEmojiMask==="true"}handlePaste(event){if(!this.hasEmojiMask())return;const pastedText=event.clipboardData.getData("text");const filteredText=stripEmojisForPaste(pastedText);if(pastedText!==filteredText){event.preventDefault();const input=this.element;const start=input.selectionStart||0;const end=input.selectionEnd||0;const currentValue=input.value;const newValue=currentValue.slice(0,start)+filteredText+currentValue.slice(end);const newCursor=start+filteredText.length;input.value=newValue;input.selectionStart=input.selectionEnd=newCursor;this.handleInput({skipEmojiFilter:true})}}handleInput({skipEmojiFilter:skipEmojiFilter=false}={}){var _a;const cursorPosition=this.element.selectionStart;let baseValue=this.element.value;if(this.hasEmojiMask()&&!skipEmojiFilter){const result=applyEmojiMask(this.element);baseValue=result.value}const maskType=this.element.getAttribute("mask");let formattedValue=baseValue;const maskKey={currency:"currency",ssn:"ssn",postal_code:"postalCode",zip_code:"zipCode",credit_card:"creditCard",cvv:"cvv"}[maskType];if(maskKey&&INPUTMASKS[maskKey]){formattedValue=INPUTMASKS[maskKey].format(baseValue)}const sanitizedInput=(_a=this.element.closest(".text_input_wrapper"))==null?void 0:_a.querySelector('[data="sanitized-pb-input"]');if(sanitizedInput){switch(maskType){case"ssn":sanitizedInput.value=sanitizeSSN(formattedValue);break;case"currency":sanitizedInput.value=sanitizeCurrency(formattedValue);break;case"credit_card":sanitizedInput.value=sanitizeCreditCard(formattedValue);break;default:sanitizedInput.value=formattedValue}}if(maskType){this.element.value=formattedValue;setCursorPosition(this.element,cursorPosition,baseValue,formattedValue)}}}function sanitizeSSN(input){return input.replace(/\D/g,"")}function sanitizeCurrency(input){return input.replace(/[$,]/g,"")}function sanitizeCreditCard(input){return input.replace(/\D/g,"")}function setCursorPosition(inputElement,cursorPosition,rawValue,formattedValue){const difference=formattedValue.length-rawValue.length;const newPosition=Math.max(0,cursorPosition+difference);requestAnimationFrame((()=>{inputElement.setSelectionRange(newPosition,newPosition)}))}function getTextFromElement(element){if(!element)return"";return element.tagName.toLowerCase()==="input"?element.value:element.innerText}function copyTextToClipboard(text){if(!text)return;navigator.clipboard.writeText(text).catch((err=>console.error("Failed to copy text:",err)))}function handleExternalControlCopyClick(element){const value=element.getAttribute("data-external-copy-value");const fromId=element.getAttribute("data-external-copy-from");if(value){copyTextToClipboard(value)}else if(fromId){const fromElement=document.querySelector(`#${fromId}`);copyTextToClipboard(getTextFromElement(fromElement))}else{console.warn("Failed to copy:",element)}}class PbCopyButton extends PbEnhancedElement{static get selector(){return".pb_copy_button_kit"}connect(){this.handleClick=this.handleClick.bind(this);this.button=this.element.querySelector("button");if(this.button){this.button.addEventListener("click",this.handleClick)}}disconnect(){if(this.button){this.button.removeEventListener("click",this.handleClick)}}handleClick(){const value=this.element.getAttribute("data-copy-value");const fromId=this.element.getAttribute("data-from");if(value){copyTextToClipboard(value)}else if(fromId){const fromElement=document.querySelector(`#${fromId}`);copyTextToClipboard(getTextFromElement(fromElement))}else{console.warn("No data-copy-value or data-from attribute found")}}}function addCopyEventListeners(){const externalCopyElements=[...document.querySelectorAll("div[data-external-copy-value]"),...document.querySelectorAll("div[data-external-copy-from]")];externalCopyElements.forEach((element=>{element.addEventListener("click",(()=>handleExternalControlCopyClick(element)))}))}const toggleVisibility=({isVisible:isVisible,onHide:onHide,onShow:onShow})=>{if(isVisible){onHide();return false}onShow();return true};const getElementHeight=(element,displayValue="block")=>{const originalDisplay=element.style.display;element.style.display=displayValue;const height=`${element.scrollHeight}px`;element.style.display=originalDisplay;return height};const setArrowVisibility=({rootElement:rootElement,downSelector:downSelector,upSelector:upSelector,showDownArrow:showDownArrow,displayValue:displayValue="inline-block"})=>{const downArrow=rootElement.querySelector(downSelector);const upArrow=rootElement.querySelector(upSelector);if(downArrow){downArrow.style.display=showDownArrow?displayValue:"none"}if(upArrow){upArrow.style.display=showDownArrow?"none":displayValue}};const MAIN_SELECTOR="[data-collapsible-main]";const CONTENT_SELECTOR="[data-collapsible-content]";const DOWN_ARROW_SELECTOR$2="#collapsible_open_icon";const UP_ARROW_SELECTOR$2="#collapsible_close_icon";class PbCollapsible extends PbEnhancedElement{static get selector(){return MAIN_SELECTOR}connect(){this.clickHandler=()=>{this.toggleElement(this.target)};this.element.addEventListener("click",this.clickHandler);if(this.target.classList.contains("is-visible")){this.displayUpArrow()}else{this.displayDownArrow()}this.customEventHandler=()=>{this.toggleElement(this.target)};document.addEventListener(`${this.target.id}`,this.customEventHandler)}disconnect(){if(this.clickHandler){this.element.removeEventListener("click",this.clickHandler)}if(this.customEventHandler&&this.target){document.removeEventListener(`${this.target.id}`,this.customEventHandler)}}get target(){return this.element.parentNode.querySelector(CONTENT_SELECTOR)}showElement(elem){const height=getElementHeight(elem);elem.classList.add("is-visible");elem.style.height=height;elem.style.overflow="hidden";window.setTimeout((()=>{elem.style.height="";elem.style.overflow="visible"}),300)}hideElement(elem){elem.style.height=elem.scrollHeight+"px";window.setTimeout((()=>{elem.style.height="0";elem.style.paddingTop="0";elem.style.paddingBottom="0";elem.style.overflow="hidden"}),1);window.setTimeout((()=>{elem.classList.remove("is-visible");elem.style.overflow=""}),300)}toggleElement(elem){const isExpanded=toggleVisibility({isVisible:elem.classList.contains("is-visible"),onHide:()=>this.hideElement(elem),onShow:()=>this.showElement(elem)});isExpanded?this.displayUpArrow():this.displayDownArrow()}toggleArrows(showDownArrow){setArrowVisibility({rootElement:this.element,downSelector:DOWN_ARROW_SELECTOR$2,upSelector:UP_ARROW_SELECTOR$2,showDownArrow:showDownArrow})}displayDownArrow(){this.toggleArrows(true)}displayUpArrow(){this.toggleArrows(false)}}class PbFixedConfirmationToast extends PbEnhancedElement{static get selector(){return'[class*="pb_fixed_confirmation_toast_kit"]'}connect(){this.self=this.element;this.autoCloseToast(this.self);if(this.self.classList.contains("remove_toast")){this.self.addEventListener("click",(()=>{this.removeToast(this.self)}))}}removeToast(elem){elem.parentNode.removeChild(elem)}autoCloseToast(element){const autoCloseDataAttr=element.getAttribute("data-pb-auto-close");if(autoCloseDataAttr){setTimeout((()=>{this.removeToast(element)}),parseInt(autoCloseDataAttr))}}}const OPTION_SELECTOR$1="[data-dropdown-option-label]";const SEARCH_INPUT_SELECTOR$1="[data-dropdown-autocomplete]";class PbDropdownKeyboard{constructor(dropdown){this.dropdown=dropdown;this.dropdownElement=dropdown.element;this.options=Array.from(this.dropdownElement.querySelectorAll(OPTION_SELECTOR$1));this.focusedOptionIndex=-1;this.searchInput=this.dropdownElement.querySelector(SEARCH_INPUT_SELECTOR$1);this.handleKeyDownBound=this.handleKeyDown.bind(this);this.handleSearchInputBound=()=>this.openDropdownIfClosed();this.init()}init(){this.dropdownElement.addEventListener("keydown",this.handleKeyDownBound);if(this.searchInput){this.searchInput.addEventListener("input",this.handleSearchInputBound)}}disconnect(){if(this.dropdownElement&&this.handleKeyDownBound){this.dropdownElement.removeEventListener("keydown",this.handleKeyDownBound)}if(this.searchInput&&this.handleSearchInputBound){this.searchInput.removeEventListener("input",this.handleSearchInputBound)}}getVisibleOptions(){return Array.from(this.dropdownElement.querySelectorAll(OPTION_SELECTOR$1)).filter((opt=>opt.style.display!=="none"))}openDropdownIfClosed(){if(!this.dropdown.target.classList.contains("open")){this.dropdown.showElement(this.dropdown.target);this.dropdown.updateArrowDisplay(true)}}handleKeyDown(event){switch(event.key){case"ArrowDown":event.preventDefault();if(!this.dropdown.target.classList.contains("open")){this.dropdown.showElement(this.dropdown.target);this.dropdown.updateArrowDisplay(true)}this.moveFocus(1);break;case"ArrowUp":event.preventDefault();this.moveFocus(-1);break;case"Enter":event.preventDefault();if(this.focusedOptionIndex!==-1){this.selectOption()}else{if(!this.dropdown.target.classList.contains("open")){this.dropdown.showElement(this.dropdown.target);this.dropdown.updateArrowDisplay(true)}}break;case"Escape":this.dropdown.hideElement(this.dropdown.target);break;case"Tab":this.dropdown.hideElement(this.dropdown.target);this.dropdown.updateArrowDisplay(false);this.resetFocus();break;case"Backspace":if(this.searchInput){setTimeout((()=>{if(this.searchInput.value.trim()===""){this.dropdown.handleBackspaceClear()}}),0)}break}}moveFocus(direction){const allOptions=Array.from(this.dropdownElement.querySelectorAll(OPTION_SELECTOR$1));const visible=this.getVisibleOptions();if(!visible.length)return;if(this.focusedOptionIndex!==-1){allOptions[this.focusedOptionIndex].classList.remove("pb_dropdown_option_focused")}const prevVisibleIndex=this.focusedOptionIndex===-1?-1:visible.indexOf(allOptions[this.focusedOptionIndex]);const nextVisibleIndex=(prevVisibleIndex+direction+visible.length)%visible.length;const nextEl=visible[nextVisibleIndex];nextEl.classList.add("pb_dropdown_option_focused");this.focusedOptionIndex=allOptions.indexOf(nextEl)}selectOption(){const allOptions=Array.from(this.dropdownElement.querySelectorAll(OPTION_SELECTOR$1));if(this.focusedOptionIndex<0)return;const optionEl=allOptions[this.focusedOptionIndex];this.dropdown.handleOptionClick({target:optionEl});this.dropdown.toggleElement(this.dropdown.target);this.dropdown.updateClearButton()}}const DROPDOWN_SELECTOR="[data-pb-dropdown]";const TRIGGER_SELECTOR="[data-dropdown-trigger]";const CONTAINER_SELECTOR="[data-dropdown-container]";const DOWN_ARROW_SELECTOR$1="[data-dropdown-open-icon]";const UP_ARROW_SELECTOR$1="[data-dropdown-close-icon]";const OPTION_SELECTOR="[data-dropdown-option-label]";const CUSTOM_DISPLAY_SELECTOR="[data-dropdown-custom-trigger]";const DROPDOWN_TRIGGER_DISPLAY="[data-dropdown-trigger-display]";const DROPDOWN_PLACEHOLDER="[data-dropdown-placeholder]";const DROPDOWN_INPUT="[data-dropdown-selected-option]";const SEARCH_INPUT_SELECTOR="[data-dropdown-autocomplete]";const SEARCH_BAR_SELECTOR="[data-dropdown-search]";const CLEAR_ICON_SELECTOR="[data-dropdown-clear-icon]";const LABEL_SELECTOR='[data-dropdown="pb-dropdown-label"]';class PbDropdown extends PbEnhancedElement{constructor(){super(...arguments);__publicField(this,"selectedOptions",new Set);__publicField(this,"clearBtn",null)}static get selector(){return DROPDOWN_SELECTOR}get target(){var _a;return((_a=this.cachedElements)==null?void 0:_a.target)||this.element.querySelector(CONTAINER_SELECTOR)}get baseInput(){var _a;return((_a=this.cachedElements)==null?void 0:_a.baseInput)||this.element.querySelector(DROPDOWN_INPUT)}get trigger(){var _a;return((_a=this.cachedElements)==null?void 0:_a.trigger)||this.element.querySelector(TRIGGER_SELECTOR)}get customTrigger(){var _a;return((_a=this.cachedElements)==null?void 0:_a.customTrigger)||this.element.querySelector(CUSTOM_DISPLAY_SELECTOR)}get dropdownWrapper(){var _a;return((_a=this.cachedElements)==null?void 0:_a.dropdownWrapper)||this.element.querySelector(".dropdown_wrapper")}get placeholder(){var _a;return((_a=this.cachedElements)==null?void 0:_a.placeholder)||this.element.querySelector(DROPDOWN_PLACEHOLDER)}cacheElements(){this.cachedElements={target:this.element.querySelector(CONTAINER_SELECTOR),baseInput:this.element.querySelector(DROPDOWN_INPUT),trigger:this.element.querySelector(TRIGGER_SELECTOR),customTrigger:this.element.querySelector(CUSTOM_DISPLAY_SELECTOR),dropdownWrapper:this.element.querySelector(".dropdown_wrapper"),placeholder:this.element.querySelector(DROPDOWN_PLACEHOLDER)}}connect(){this.element._pbDropdownInstance=this;this.cacheElements();this.keyboardHandler=new PbDropdownKeyboard(this);this.isMultiSelect=this.element.dataset.pbDropdownMultiSelect==="true";this.closeOnClick=this.element.dataset.pbDropdownCloseOnClick||"any";this.formPillProps=this.element.dataset.formPillProps?JSON.parse(this.element.dataset.formPillProps):{};const baseInput=this.baseInput;this.wasOriginallyRequired=baseInput&&baseInput.hasAttribute("required");this.setDefaultValue();this.bindEventListeners();this.bindSearchInput();this.updateArrowDisplay(false);this.handleFormValidation();this.handleFormReset();this.bindSearchBar();this.updatePills();this.clearBtn=this.element.querySelector(CLEAR_ICON_SELECTOR);this.isClearable=this.element.dataset.pbDropdownClearable!=="false";if(this.clearBtn){this.clearBtn.style.display="none";this.clearBtnHandler=e=>{e.stopPropagation();this.clearSelection()};this.clearBtn.addEventListener("click",this.clearBtnHandler)}this.updateClearButton();this.handleClearEventBound=this.handleClearEvent.bind(this);document.addEventListener("pb:dropdown:clear",this.handleClearEventBound);this.handleSelectEventBound=this.handleSelectEvent.bind(this);document.addEventListener("pb:dropdown:select",this.handleSelectEventBound);const customEventTypeString=this.element.dataset.customEventType;if(customEventTypeString){this.customClearEventTypes=customEventTypeString.split(",").map((e=>e.trim())).filter(Boolean);this.handleCustomClearBound=this.handleCustomClearEvent.bind(this);this.customClearEventTypes.forEach((eventType=>{document.addEventListener(eventType,this.handleCustomClearBound)}))}}disconnect(){if(this.element._pbDropdownInstance===this){delete this.element._pbDropdownInstance}if(this.keyboardHandler&&typeof this.keyboardHandler.disconnect==="function"){this.keyboardHandler.disconnect()}if(this.customTriggerClickHandler){const customTrigger=this.customTrigger||this.element;customTrigger.removeEventListener("click",this.customTriggerClickHandler)}if(this.handleOptionClickBound){this.target.removeEventListener("click",this.handleOptionClickBound)}if(this.handleDocumentClickBound){document.removeEventListener("click",this.handleDocumentClickBound,true)}if(this.searchBar&&this.searchBarHandler){this.searchBar.removeEventListener("input",this.searchBarHandler)}if(this.searchInput){if(this.searchInputFocusHandler){const trigger=this.trigger;if(trigger){trigger.removeEventListener("click",this.searchInputFocusHandler)}}if(this.searchInputHandler){this.searchInput.removeEventListener("input",this.searchInputHandler)}}if(this.clearBtn&&this.clearBtnHandler){this.clearBtn.removeEventListener("click",this.clearBtnHandler)}if(this.handleClearEventBound){document.removeEventListener("pb:dropdown:clear",this.handleClearEventBound)}if(this.handleSelectEventBound){document.removeEventListener("pb:dropdown:select",this.handleSelectEventBound)}if(this.customClearEventTypes&&this.handleCustomClearBound){this.customClearEventTypes.forEach((eventType=>{document.removeEventListener(eventType,this.handleCustomClearBound)}))}}updateClearButton(){var _a;if(!this.clearBtn)return;if(!this.isClearable){this.clearBtn.style.display="none";return}const hasSelection=this.isMultiSelect?this.selectedOptions.size>0:Boolean((_a=this.baseInput)==null?void 0:_a.value);this.clearBtn.style.display=hasSelection?"":"none"}bindEventListeners(){const customTrigger=this.customTrigger||this.element;this.customTriggerClickHandler=e=>{var _a;const label=e.target.closest(LABEL_SELECTOR);if(label&&label.htmlFor){const trigger=this.element.querySelector(`#${CSS.escape(label.htmlFor)}`);if(trigger){trigger.focus()}}if(this.closeOnClick==="outside"&&((_a=this.target)==null?void 0:_a.contains(e.target))){return}this.toggleElement(this.target)};customTrigger.addEventListener("click",this.customTriggerClickHandler);this.handleOptionClickBound=this.handleOptionClick.bind(this);this.target.addEventListener("click",this.handleOptionClickBound);this.handleDocumentClickBound=this.handleDocumentClick.bind(this);document.addEventListener("click",this.handleDocumentClickBound,true)}bindSearchBar(){this.searchBar=this.element.querySelector(SEARCH_BAR_SELECTOR);if(!this.searchBar)return;this.searchBarHandler=e=>this.handleSearch(e.target.value);this.searchBar.addEventListener("input",this.searchBarHandler)}bindSearchInput(){var _a;this.searchInput=this.element.querySelector(SEARCH_INPUT_SELECTOR);if(!this.searchInput)return;this.searchInputFocusHandler=()=>this.searchInput.focus();(_a=this.trigger)==null?void 0:_a.addEventListener("click",this.searchInputFocusHandler);this.searchInputHandler=e=>this.handleSearch(e.target.value);this.searchInput.addEventListener("input",this.searchInputHandler)}adjustDropdownHeight(){if(this.target.classList.contains("open")){const el=this.target;const shouldConstrain=el.classList.contains("constrain_height");el.style.height="auto";requestAnimationFrame((()=>{if(shouldConstrain){const fontSize=parseFloat(getComputedStyle(el).fontSize)||16;const maxHeight=fontSize*18;const scrollHeight=el.scrollHeight;const newHeight=Math.min(scrollHeight,maxHeight);el.offsetHeight;el.style.height=newHeight+"px"}else{el.offsetHeight;el.style.height=el.scrollHeight+"px"}}))}}adjustDropdownPosition(container){if(!container)return;const wrapper=this.dropdownWrapper;if(!wrapper)return;const wrapperRect=wrapper.getBoundingClientRect();const h=container.getBoundingClientRect().height||container.scrollHeight;const spaceBelow=window.innerHeight-wrapperRect.bottom;const spaceAbove=wrapperRect.top;if(spaceBelow<h+10&&spaceAbove>=h+10){container.style.top="auto";container.style.bottom="calc(100% + 5px)";container.style.marginTop="0";container.style.marginBottom="0"}else{container.style.top="";container.style.bottom="";container.style.marginTop="";container.style.marginBottom=""}}handleSearch(term=""){const lcTerm=term.toLowerCase();let hasMatch=false;this.element.querySelectorAll(OPTION_SELECTOR).forEach((opt=>{if(this.isMultiSelect&&this.selectedOptions.has(opt.dataset.dropdownOptionLabel)){opt.style.display="none";return}const label=JSON.parse(opt.dataset.dropdownOptionLabel).label.toString().toLowerCase();const match=label.includes(lcTerm);opt.style.display=match?"":"none";if(match)hasMatch=true}));this.adjustDropdownHeight();this.removeNoOptionsMessage();if(!hasMatch){this.showNoOptionsMessage()}}showNoOptionsMessage(){if(this.element.querySelector(".dropdown_no_options"))return;const noOptionElement=document.createElement("div");noOptionElement.className="pb_body_kit_light dropdown_no_options pb_item_kit p_xs display_flex justify_content_center";noOptionElement.textContent="no option";this.target.appendChild(noOptionElement)}removeNoOptionsMessage(){const existing=this.element.querySelector(".dropdown_no_options");if(existing){existing.remove()}}handleOptionClick(event){const option=event.target.closest(OPTION_SELECTOR);const hiddenInput=this.baseInput;if(option){const value=option.dataset.dropdownOptionLabel;if(this.isMultiSelect){const alreadySelected=this.selectedOptions.has(value);if(alreadySelected){this.selectedOptions.delete(value)}else{this.selectedOptions.add(value)}this.updatePills();this.syncHiddenInputs();if(this.searchInput&&this.isMultiSelect){this.searchInput.value="";this.handleBackspaceClear()}}else{hiddenInput.value=JSON.parse(value).id}this.clearFormValidation(hiddenInput);this.onOptionSelected(value,option);this.updateClearButton()}}handleDocumentClick(event){if(event.target.closest(SEARCH_BAR_SELECTOR))return;const shouldCloseOnOutsideClick=this.closeOnClick==="outside"||this.closeOnClick==="any";if(shouldCloseOnOutsideClick&&this.isClickOutside(event)&&this.target.classList.contains("open")){this.hideElement(this.target);this.updateArrowDisplay(false)}}handleClearEvent(event){var _a;const targetId=(_a=event.detail)==null?void 0:_a.dropdownId;if(targetId&&this.element.id===targetId){this.clearSelection()}}handleCustomClearEvent(event){var _a;const targetId=(_a=event.detail)==null?void 0:_a.dropdownId;if(targetId==null||this.element.id===targetId){this.clearSelection()}}handleSelectEvent(event){var _a,_b,_c;const targetId=(_a=event.detail)==null?void 0:_a.dropdownId;if(!targetId||this.element.id!==targetId)return;const optionId=(_b=event.detail)==null?void 0:_b.optionId;const optionIds=(_c=event.detail)==null?void 0:_c.optionIds;if(optionId!=null){this.setSelectionByOptionId(optionId)}else if(Array.isArray(optionIds)){this.setSelectionByOptionIds(optionIds)}}setSelectionByOptionId(optionId){if(this.isMultiSelect)return;const hiddenInput=this.baseInput;const optionEls=Array.from(this.element.querySelectorAll(OPTION_SELECTOR));const selectedOption=optionEls.find((opt=>{try{return JSON.parse(opt.dataset.dropdownOptionLabel).id===optionId}catch{return false}}));if(!selectedOption)return;optionEls.forEach((opt=>opt.classList.remove("pb_dropdown_option_selected")));selectedOption.classList.add("pb_dropdown_option_selected");if(hiddenInput)hiddenInput.value=optionId;const optionData=JSON.parse(selectedOption.dataset.dropdownOptionLabel);const customDisplayElement=this.element.querySelector("[data-dropdown-trigger-custom-display]");if(customDisplayElement){this.setTriggerElementText("");customDisplayElement.style.display="block";customDisplayElement.style.paddingRight="8px"}else{this.setTriggerElementText(optionData.label)}if(this.searchInput){this.searchInput.value=optionData.label}if(optionData.formatted_start_date&&optionData.formatted_end_date){const startDateId=this.element.dataset.startDateId;const endDateId=this.element.dataset.endDateId;const controlsStartId=this.element.dataset.controlsStartId;const controlsEndId=this.element.dataset.controlsEndId;if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=optionData.formatted_start_date}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=optionData.formatted_end_date}const syncDatePickers=()=>{var _a,_b;if(controlsStartId){const startPicker=(_a=document.querySelector(`#${CSS.escape(controlsStartId)}`))==null?void 0:_a._flatpickr;if(startPicker)startPicker.setDate(optionData.formatted_start_date,true,"m/d/Y")}if(controlsEndId){const endPicker=(_b=document.querySelector(`#${CSS.escape(controlsEndId)}`))==null?void 0:_b._flatpickr;if(endPicker)endPicker.setDate(optionData.formatted_end_date,true,"m/d/Y")}};syncDatePickers();setTimeout(syncDatePickers,100);setTimeout(syncDatePickers,300)}this.updateClearButton();this.emitSelectionChange()}setSelectionByOptionIds(optionIds){if(!this.isMultiSelect||!optionIds.length)return;const optionEls=Array.from(this.element.querySelectorAll(OPTION_SELECTOR));this.selectedOptions.clear();optionEls.forEach((opt=>{opt.classList.remove("pb_dropdown_option_selected");opt.style.display=""}));optionIds.forEach((id=>{const opt=optionEls.find((o=>{try{return JSON.parse(o.dataset.dropdownOptionLabel).id===id}catch{return false}}));if(opt){const raw=opt.dataset.dropdownOptionLabel;this.selectedOptions.add(raw);opt.style.display="none"}}));this.updatePills();this.updateClearButton();this.adjustDropdownHeight();this.syncHiddenInputs();this.emitSelectionChange()}isClickOutside(event){var _a;const label=event.target.closest(LABEL_SELECTOR);if(label&&this.element.contains(label))return false;const customTrigger=this.customTrigger;if(customTrigger){const clickInTrigger=customTrigger.contains(event.target);const clickInContainer=(_a=this.target)==null?void 0:_a.contains(event.target);return!clickInTrigger&&!clickInContainer}else{const triggerElement=this.trigger;const containerElement=this.element.querySelector(CONTAINER_SELECTOR);const isOutsideTrigger=triggerElement?!triggerElement.contains(event.target):true;const isOutsideContainer=containerElement?!containerElement.contains(event.target):true;return isOutsideTrigger&&isOutsideContainer}}emitSelectionChange(){let detail;if(this.isMultiSelect){detail=Array.from(this.selectedOptions).map(JSON.parse)}else{const hiddenInput=this.baseInput;detail=hiddenInput.value?JSON.parse(this.element.querySelector(OPTION_SELECTOR+`[data-dropdown-option-label*='"id":"${hiddenInput.value}"']`).dataset.dropdownOptionLabel):null}this.element.setAttribute("data-option-selected",JSON.stringify(detail));this.element.dispatchEvent(new CustomEvent("pb:dropdown:selected",{detail:detail,bubbles:true}))}onOptionSelected(value,selectedOption){var _a,_b,_c,_d;const triggerElement=this.element.querySelector(DROPDOWN_TRIGGER_DISPLAY);const customDisplayElement=this.element.querySelector("[data-dropdown-trigger-custom-display]");if(triggerElement){if(!this.isMultiSelect){const selectedLabel=JSON.parse(value).label;triggerElement.textContent=selectedLabel;this.emitSelectionChange();const optionData=JSON.parse(value);const startDateId=this.element.dataset.startDateId;const endDateId=this.element.dataset.endDateId;const controlsStartId=this.element.dataset.controlsStartId;const controlsEndId=this.element.dataset.controlsEndId;if(optionData.formatted_start_date&&optionData.formatted_end_date){if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=optionData.formatted_start_date}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=optionData.formatted_end_date}if(controlsStartId){const startPicker=(_a=document.querySelector(`#${controlsStartId}`))==null?void 0:_a._flatpickr;if(startPicker){startPicker.setDate(optionData.formatted_start_date,true,"m/d/Y")}}if(controlsEndId){const endPicker=(_b=document.querySelector(`#${controlsEndId}`))==null?void 0:_b._flatpickr;if(endPicker){endPicker.setDate(optionData.formatted_end_date,true,"m/d/Y")}}}else if(startDateId||endDateId){if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=""}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=""}if(controlsStartId){const startPicker=(_c=document.querySelector(`#${controlsStartId}`))==null?void 0:_c._flatpickr;if(startPicker){startPicker.clear()}}if(controlsEndId){const endPicker=(_d=document.querySelector(`#${controlsEndId}`))==null?void 0:_d._flatpickr;if(endPicker){endPicker.clear()}}}}if(customDisplayElement){triggerElement.textContent="";customDisplayElement.style.display="block";customDisplayElement.style.paddingRight="8px"}}const autocompleteInput=this.element.querySelector(SEARCH_INPUT_SELECTOR);if(autocompleteInput&&!this.isMultiSelect){autocompleteInput.value=JSON.parse(value).label;this.emitSelectionChange()}const customTrigger=this.customTrigger;const shouldCloseOnOptionSelect=this.closeOnClick==="any"||this.closeOnClick==="inside";if(customTrigger&&shouldCloseOnOptionSelect&&this.target.classList.contains("open")){this.hideElement(this.target);this.updateArrowDisplay(false)}const options=this.element.querySelectorAll(OPTION_SELECTOR);if(this.isMultiSelect){this.emitSelectionChange();Array.from(this.selectedOptions).map((option=>{if(JSON.parse(option).id===JSON.parse(selectedOption.dataset.dropdownOptionLabel).id){selectedOption.style.display="none";this.adjustDropdownHeight()}}));this.baseInput.value=Array.from(this.selectedOptions).map((opt=>JSON.parse(opt).id)).join(",")}else{options.forEach((option=>{option.classList.remove("pb_dropdown_option_selected")}));selectedOption.classList.add("pb_dropdown_option_selected")}this.updateClearButton()}showElement(elem){elem.classList.remove("close");elem.classList.add("open");const shouldConstrain=elem.classList.contains("constrain_height");if(shouldConstrain){const fontSize=parseFloat(getComputedStyle(elem).fontSize)||16;const maxHeight=fontSize*18;const scrollHeight=elem.scrollHeight;const height=Math.min(scrollHeight,maxHeight);elem.style.height=height+"px"}else{elem.style.height=elem.scrollHeight+"px"}this.adjustDropdownPosition(elem)}hideElement(elem){elem.style.height=elem.scrollHeight+"px";window.setTimeout((()=>{elem.classList.add("close");elem.classList.remove("open");this.resetFocus()}),0)}resetFocus(){if(this.keyboardHandler){this.keyboardHandler.focusedOptionIndex=-1;const options=this.element.querySelectorAll(OPTION_SELECTOR);options.forEach((option=>option.classList.remove("pb_dropdown_option_focused")))}}toggleElement(elem){const isOpen=toggleVisibility({isVisible:elem.classList.contains("open"),onHide:()=>this.hideElement(elem),onShow:()=>this.showElement(elem)});this.updateArrowDisplay(isOpen)}updateArrowDisplay(isOpen){setArrowVisibility({rootElement:this.element,downSelector:DOWN_ARROW_SELECTOR$1,upSelector:UP_ARROW_SELECTOR$1,showDownArrow:!isOpen})}handleFormValidation(){const hiddenInput=this.baseInput;hiddenInput.addEventListener("invalid",(function(event){if(hiddenInput.hasAttribute("required")&&hiddenInput.value===""){event.preventDefault();hiddenInput.closest(".dropdown_wrapper").classList.add("error")}}),true)}clearFormValidation(input){if(this.isMultiSelect){if(this.selectedOptions.size>0){const dropdownWrapperElement=input.closest(".dropdown_wrapper");dropdownWrapperElement.classList.remove("error");const errorLabelElement=dropdownWrapperElement.querySelector(".pb_body_kit_negative");if(errorLabelElement){errorLabelElement.remove()}return}}if(input.checkValidity()){const dropdownWrapperElement=input.closest(".dropdown_wrapper");dropdownWrapperElement.classList.remove("error");const errorLabelElement=dropdownWrapperElement.querySelector(".pb_body_kit_negative");if(errorLabelElement){errorLabelElement.remove()}}}setDefaultValue(){const hiddenInput=this.baseInput;const optionEls=Array.from(this.element.querySelectorAll(OPTION_SELECTOR));const defaultValue=hiddenInput.dataset.defaultValue||"";if(!defaultValue)return;if(this.isMultiSelect){const ids=defaultValue.split(",");ids.forEach((id=>{const selectedOption=optionEls.find((opt=>{try{return JSON.parse(opt.dataset.dropdownOptionLabel).id===id}catch{return false}}));if(!selectedOption){console.warn(`Dropdown default ID ${id} not found`);return}const raw=selectedOption.dataset.dropdownOptionLabel;this.selectedOptions.add(raw);selectedOption.style.display="none"}));this.updatePills();this.updateClearButton();this.adjustDropdownHeight();this.syncHiddenInputs()}else{hiddenInput.value=defaultValue;const selectedOption=optionEls.find((opt=>{try{return JSON.parse(opt.dataset.dropdownOptionLabel).id===defaultValue}catch{return false}}));if(!selectedOption)return;selectedOption.classList.add("pb_dropdown_option_selected");const optionData=JSON.parse(selectedOption.dataset.dropdownOptionLabel);this.setTriggerElementText(optionData.label);if(optionData.formatted_start_date&&optionData.formatted_end_date){const startDateId=this.element.dataset.startDateId;const endDateId=this.element.dataset.endDateId;const controlsStartId=this.element.dataset.controlsStartId;const controlsEndId=this.element.dataset.controlsEndId;if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=optionData.formatted_start_date}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=optionData.formatted_end_date}const syncDatePickers=()=>{var _a,_b;if(controlsStartId){const startPicker=(_a=document.querySelector(`#${controlsStartId}`))==null?void 0:_a._flatpickr;if(startPicker){startPicker.setDate(optionData.formatted_start_date,true,"m/d/Y")}}if(controlsEndId){const endPicker=(_b=document.querySelector(`#${controlsEndId}`))==null?void 0:_b._flatpickr;if(endPicker){endPicker.setDate(optionData.formatted_end_date,true,"m/d/Y")}}};syncDatePickers();setTimeout(syncDatePickers,100);setTimeout(syncDatePickers,300)}}}handleFormReset(){const form=this.element.closest("form");if(form){form.addEventListener("reset",(()=>{this.resetDropdownValue()}))}}resetDropdownValue(){const hiddenInput=this.baseInput;const options=this.element.querySelectorAll(OPTION_SELECTOR);options.forEach((option=>{option.classList.remove("pb_dropdown_option_selected");option.style.display=""}));hiddenInput.value="";const defaultPlaceholder=this.placeholder;this.setTriggerElementText(defaultPlaceholder.dataset.dropdownPlaceholder);if(this.searchInput){this.searchInput.value="";if(this.target.classList.contains("open")){const el=this.target;el.style.height="auto";requestAnimationFrame((()=>{const newHeight=el.scrollHeight+"px";el.offsetHeight;el.style.height=newHeight}))}}if(this.isMultiSelect){this.selectedOptions.clear();this.updatePills();this.updateClearButton();this.syncHiddenInputs()}}setTriggerElementText(text){const triggerElement=this.element.querySelector(DROPDOWN_TRIGGER_DISPLAY);if(triggerElement){triggerElement.textContent=text}}updatePills(){if(!this.isMultiSelect)return;const wrapper=this.element.querySelector("[data-dropdown-pills-wrapper]");const placeholder=this.element.querySelector("[data-dropdown-trigger-display-multi-select]");if(!wrapper)return;wrapper.innerHTML="";if(placeholder){if(this.selectedOptions.size>0){placeholder.style.display="none"}else{placeholder.style.display=""}}Array.from(this.selectedOptions).map((option=>{const pill=document.createElement("div");const color=this.formPillProps.color||"primary";pill.classList.add("pb_form_pill_kit",`pb_form_pill_${color}`,"pb_form_pill_none","mr_xs");if(this.formPillProps.size==="small"){pill.classList.add("pb_form_pill_small")}pill.tabIndex=0;pill.dataset.pillId=JSON.parse(option).id;const innerDiv=document.createElement("h3");innerDiv.className="pb_title_kit pb_title_4 pb_form_pill_text";innerDiv.textContent=JSON.parse(option).label;pill.appendChild(innerDiv);const closeIcon=document.createElement("div");closeIcon.className="pb_form_pill_close";closeIcon.innerHTML=`<svg class="pb_custom_icon svg-inline--fa svg_${this.formPillProps.size==="small"?"xs":"sm"} svg_fw" xmlns="http://www.w3.org/2000/svg" width="auto" height="auto" viewBox="0 0 31 25"><path fill="currentColor" d="M23.0762 6.77734L17.4512 12.4023L23.0293 17.9805C23.498 18.4023 23.498 19.1055 23.0293 19.5273C22.6074 19.9961 21.9043 19.9961 21.4824 19.5273L15.8574 13.9492L10.2793 19.5273C9.85742 19.9961 9.1543 19.9961 8.73242 19.5273C8.26367 19.1055 8.26367 18.4023 8.73242 17.9336L14.3105 12.3555L8.73242 6.77734C8.26367 6.35547 8.26367 5.65234 8.73242 5.18359C9.1543 4.76172 9.85742 4.76172 10.3262 5.18359L15.9043 10.8086L21.4824 5.23047C21.9043 4.76172 22.6074 4.76172 23.0762 5.23047C23.498 5.65234 23.498 6.35547 23.0762 6.77734Z"/></svg>`;pill.appendChild(closeIcon);closeIcon.addEventListener("click",(e=>{e.stopPropagation();const id=pill.dataset.pillId;this.selectedOptions.delete(option);const optEl=this.element.querySelector(`${OPTION_SELECTOR}[data-dropdown-option-label*='"id":${JSON.stringify(id)}']`);if(optEl){optEl.style.display="";if(this.target.classList.contains("open")){this.showElement(this.target)}}this.updatePills();this.updateClearButton();this.emitSelectionChange();this.syncHiddenInputs()}));wrapper.appendChild(pill)}))}clearSelection(){var _a,_b;if(this.isMultiSelect){this.selectedOptions.clear();this.element.querySelectorAll(OPTION_SELECTOR).forEach((opt=>{opt.style.display=""}));if(this.target.classList.contains("open")){this.showElement(this.target)}}const customDisplay=this.element.querySelector("[data-dropdown-trigger-custom-display]");if(customDisplay){customDisplay.style.display="none"}const startDateId=this.element.dataset.startDateId;const endDateId=this.element.dataset.endDateId;const controlsStartId=this.element.dataset.controlsStartId;const controlsEndId=this.element.dataset.controlsEndId;if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=""}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=""}if(controlsStartId){const startPicker=(_a=document.querySelector(`#${controlsStartId}`))==null?void 0:_a._flatpickr;if(startPicker){startPicker.clear()}}if(controlsEndId){const endPicker=(_b=document.querySelector(`#${controlsEndId}`))==null?void 0:_b._flatpickr;if(endPicker){endPicker.clear()}}this.resetDropdownValue();this.updatePills();this.updateClearButton();this.syncHiddenInputs();this.emitSelectionChange()}clearSelected(){if(this.element.dataset.pbDropdownVariant!=="quickpick"||this.isMultiSelect){return}const customDisplay=this.element.querySelector("[data-dropdown-trigger-custom-display]");if(customDisplay){customDisplay.style.display="none"}const startDateId=this.element.dataset.startDateId;const endDateId=this.element.dataset.endDateId;if(startDateId){const startDateInput=document.getElementById(startDateId);if(startDateInput)startDateInput.value=""}if(endDateId){const endDateInput=document.getElementById(endDateId);if(endDateInput)endDateInput.value=""}this.resetDropdownValue();this.updateClearButton();this.emitSelectionChange()}syncHiddenInputs(){if(!this.isMultiSelect)return;this.element.querySelectorAll('input[data-generated="true"]').forEach((n=>n.remove()));const baseInput=this.baseInput;if(!baseInput)return;const name=baseInput.getAttribute("name");this.selectedOptions.forEach((raw=>{const optionData=JSON.parse(raw);const id=optionData.id||optionData.value;const inp=document.createElement("input");inp.type="hidden";inp.name=name;inp.value=id;inp.dataset.generated="true";baseInput.insertAdjacentElement("afterend",inp)}));if(this.selectedOptions.size>0){baseInput.value="";baseInput.removeAttribute("required")}else{baseInput.value="";if(this.wasOriginallyRequired){baseInput.setAttribute("required","")}}}handleBackspaceClear(){if(!this.isMultiSelect){this.element.querySelectorAll(OPTION_SELECTOR).forEach((opt=>{opt.classList.remove("pb_dropdown_option_selected");opt.style.display="";this.adjustDropdownHeight()}));const hiddenInput=this.baseInput;if(hiddenInput)hiddenInput.value="";const placeholder=this.placeholder;if(placeholder)this.setTriggerElementText(placeholder.dataset.dropdownPlaceholder)}if(this.isMultiSelect){this.element.querySelectorAll(OPTION_SELECTOR).forEach((opt=>{const optValue=opt.dataset.dropdownOptionLabel;if(this.selectedOptions.size>0&&this.selectedOptions.has(optValue)){opt.style.display="none"}else{opt.style.display=""}this.adjustDropdownHeight()}))}}}function showActionBar(actionBar,selectedCount){const tableContainer=actionBar.closest(".pb_advanced_table");actionBar.style.height="auto";actionBar.style.overflow="visible";actionBar.style.opacity="1";actionBar.style.transitionProperty="all";actionBar.style.transitionTimingFunction="ease-in-out";actionBar.classList.remove("p_none");actionBar.classList.add("p_xs","is-visible","show-action-card");if(tableContainer){tableContainer.classList.remove("hidden-action-bar")}const countElement=actionBar.querySelector(".selected-count");if(countElement){countElement.textContent=`${selectedCount} Selected`}}function hideActionBar(actionBar){const tableContainer=actionBar.closest(".pb_advanced_table");actionBar.style.height="0px";actionBar.style.overflow="hidden";actionBar.style.opacity="0";actionBar.classList.add("p_none");actionBar.classList.remove("p_xs","is-visible","show-action-card");if(tableContainer){tableContainer.classList.add("hidden-action-bar")}}function updateSelectionActionBar(table,selectedCount){const actionBar=table.querySelector(".row-selection-actions-card");if(!actionBar)return;if(selectedCount>0){showActionBar(actionBar,selectedCount)}else{hideActionBar(actionBar)}}const ADVANCED_TABLE_SELECTOR="[data-advanced-table]";const DOWN_ARROW_SELECTOR="#advanced-table_open_icon";const UP_ARROW_SELECTOR="#advanced-table_close_icon";const _PbAdvancedTable=class _PbAdvancedTable extends PbEnhancedElement{static get selector(){return ADVANCED_TABLE_SELECTOR}constructor(...args){super(...args);this.childRowsMap=new Map}get table(){return this.cachedTable||(this.cachedTable=this.element.closest("table"))}get mainTable(){return this.cachedMainTable||(this.cachedMainTable=this.element.closest(".pb_advanced_table"))}childRowsFor(parentId){if(!this.childRowsMap.has(parentId)){const table=this.table;const rows=Array.from(table.querySelectorAll(`tr[data-row-parent="${parentId}"]`));this.childRowsMap.set(parentId,rows)}return this.childRowsMap.get(parentId)}updateTableSelectedRowsAttribute(){const mainTable=this.mainTable;if(!mainTable)return;mainTable.dataset.selectedRows=JSON.stringify(Array.from(_PbAdvancedTable.selectedRows))}recalculateSelectedCount(){const table=this.table;if(!table)return;const rowCheckboxes=table.querySelectorAll('label[data-row-id] input[type="checkbox"]');const parentCheckboxes=table.querySelectorAll('[data-pb-checkbox-indeterminate-main="true"] input[type="checkbox"]');const selectAllCheckbox=table.querySelector('#select-all-rows input[type="checkbox"]');const filteredParentCheckboxes=Array.from(parentCheckboxes).filter((checkbox=>checkbox!==selectAllCheckbox&&!checkbox.id.includes("select-all-rows")));const allCheckboxes=new Set([...rowCheckboxes,...filteredParentCheckboxes]);_PbAdvancedTable.selectedRows.clear();allCheckboxes.forEach((checkbox=>{const rowEl=checkbox.closest("tr");const isChecked=checkbox.checked;if(isChecked){_PbAdvancedTable.selectedRows.add(checkbox.id);if(rowEl){rowEl.classList.add("bg-row-selection");rowEl.classList.remove("pb-bg-row-white","bg-silver")}}else{if(rowEl){rowEl.classList.remove("bg-row-selection");if(this.isRowExpanded(rowEl)){rowEl.classList.remove("bg-silver");rowEl.classList.add("pb-bg-row-white")}else{rowEl.classList.remove("pb-bg-row-white");rowEl.classList.add("bg-silver")}}}}));this.updateTableSelectedRowsAttribute();updateSelectionActionBar(this.mainTable,_PbAdvancedTable.selectedRows.size);if(selectAllCheckbox){selectAllCheckbox.checked=Array.from(rowCheckboxes).every((cb=>cb.checked))}}isRowExpanded(rowEl){const closeIcon=rowEl.querySelector(UP_ARROW_SELECTOR);return(closeIcon==null?void 0:closeIcon.style.display)==="none"||!closeIcon}handleCheckboxClick(event){const checkbox=event.currentTarget;const rowId=checkbox.id;const isChecked=checkbox.checked;const rowEl=checkbox.closest("tr");if(isChecked){_PbAdvancedTable.selectedRows.add(rowId);rowEl.classList.add("bg-row-selection");rowEl.classList.remove("pb-bg-row-white","bg-silver")}else{_PbAdvancedTable.selectedRows.delete(rowId)}if(!isChecked){rowEl.classList.remove("bg-row-selection");if(this.isRowExpanded(rowEl)){rowEl.classList.remove("bg-silver");rowEl.classList.add("pb-bg-row-white")}else{rowEl.classList.remove("pb-bg-row-white");rowEl.classList.add("bg-silver")}}this.updateTableSelectedRowsAttribute();const table=this.table;const selectAllCheckbox=table.querySelector("#select-all-rows");if(selectAllCheckbox){const allCheckboxes=table.querySelectorAll("label[data-row-id] input[type='checkbox']");const allChecked=Array.from(allCheckboxes).every((cb=>cb.checked));const selectAllInput=selectAllCheckbox.querySelector('input[type="checkbox"]');selectAllInput.checked=allChecked}updateSelectionActionBar(this.mainTable,_PbAdvancedTable.selectedRows.size)}get target(){return this.childRowsFor(this.element.id)||[]}connect(){const table=this.table;if(!table)return;this.hideCloseIcon();const mainTable=this.mainTable;if(mainTable){updateSelectionActionBar(mainTable)}table.querySelectorAll("tr[data-row-parent]").forEach((row=>{const parentId=row.dataset.rowParent;if(!this.childRowsMap.has(parentId)){this.childRowsMap.set(parentId,[])}this.childRowsMap.get(parentId).push(row)}));if(table.dataset.pbAdvancedTableInitialized)return;table.dataset.pbAdvancedTableInitialized="true";if(mainTable){_PbAdvancedTable.updateStickyHeaderRowHeights(mainTable);const resizeObserver=new ResizeObserver((()=>{_PbAdvancedTable.updateStickyHeaderRowHeights(mainTable);_PbAdvancedTable.updatePinnedRowsStickyTops(mainTable)}));resizeObserver.observe(table);mainTable._advancedTableHeaderResizeObserver=resizeObserver}table.addEventListener("change",(event=>{const checkbox=event.target.closest('input[type="checkbox"]');if(!checkbox)return;if(checkbox.closest("#select-all-rows")){const checkAll=checkbox.checked;const rowCheckboxes=table.querySelectorAll('label[data-row-id] input[type="checkbox"]');rowCheckboxes.forEach((cb=>{if(cb.checked!==checkAll){cb.checked=checkAll;this.handleCheckboxClick({currentTarget:cb})}}));setTimeout((()=>{this.recalculateSelectedCount()}),0);return}const rowLabel=checkbox.closest("label[data-row-id]");if(rowLabel){this.handleCheckboxClick({currentTarget:checkbox});setTimeout((()=>{this.recalculateSelectedCount()}),0)}}));table.addEventListener("checkbox-programmatic-change",(event=>{const checkbox=event.target;if(!checkbox||checkbox.type!=="checkbox")return;const rowLabel=checkbox.closest("label[data-row-id]");if(rowLabel){this.handleCheckboxClick({currentTarget:checkbox})}setTimeout((()=>{this.recalculateSelectedCount()}),10)}));table.addEventListener("change",(event=>{const checkbox=event.target;if(checkbox&&checkbox.type==="checkbox"){setTimeout((()=>{this.recalculateSelectedCount()}),50)}}));table.addEventListener("click",(event=>{const toggleBtn=event.target.closest("[data-advanced-table]");if(!toggleBtn||_PbAdvancedTable.isCollapsing)return;const prevElement=this.element;this.element=toggleBtn;const isExpanded=toggleBtn.querySelector(UP_ARROW_SELECTOR).style.display==="inline-block";if(!isExpanded){_PbAdvancedTable.expandedRows.add(toggleBtn.id)}else{_PbAdvancedTable.expandedRows.delete(toggleBtn.id)}const childRows=this.childRowsFor(toggleBtn.id);this.toggleElement(childRows);this.element=prevElement}));this.addBorderRadiusOnLastVisibleRow()}addBorderRadiusOnLastVisibleRow(){const parentElement=this.mainTable;if(!parentElement)return;const table=document.getElementById(parentElement.id);if(table){const visibleRows=table.querySelectorAll("tr.is-visible, tr:not(.toggle-content)");visibleRows.forEach((row=>{row.classList.remove("last-visible-row");row.classList.remove("last-row-cell")}));const lastVisibleRow=visibleRows[visibleRows.length-1];if(lastVisibleRow){lastVisibleRow.classList.add("last-visible-row");lastVisibleRow.classList.add("last-row-cell")}_PbAdvancedTable.updateStickyHeaderRowHeights(parentElement);_PbAdvancedTable.updatePinnedRowsStickyTops(table)}}static updateStickyHeaderRowHeights(advancedTableWrapper){if(!advancedTableWrapper)return;const table=advancedTableWrapper.querySelector("table.pb_table");const thead=table==null?void 0:table.querySelector("thead");if(!thead)return;const rows=Array.from(thead.querySelectorAll("tr"));let totalHeight=0;rows.forEach(((tr,index)=>{const h=tr.offsetHeight;if(index===0){advancedTableWrapper.style.setProperty("--advanced-table-header-row-0-height",`${h}px`)}else if(index===1){advancedTableWrapper.style.setProperty("--advanced-table-header-row-1-height",`${h}px`)}totalHeight+=h}));advancedTableWrapper.style.setProperty("--advanced-table-header-height",`${totalHeight}px`)}static updatePinnedRowsStickyTops(advancedTableWrapper){const pinnedTbody=advancedTableWrapper==null?void 0:advancedTableWrapper.querySelector("tbody.pinned-rows-tbody");if(!pinnedTbody)return;const pinnedRows=Array.from(pinnedTbody.querySelectorAll("tr.pinned-row"));const visibleRows=pinnedRows.filter((tr=>tr.style.display!=="none"&&tr.offsetParent!==null));const headerOffset="var(--advanced-table-header-height, 44px)";visibleRows.forEach(((tr,index)=>{tr.style.top=`calc(${headerOffset} + 2.5em * ${index})`}))}hideCloseIcon(){const closeIcon=this.element.querySelector(UP_ARROW_SELECTOR);closeIcon.style.display="none"}showElement(elements){elements.forEach((elem=>{elem.style.display="table-row";elem.classList.add("is-visible");const childRowsAll=this.table.querySelectorAll(`[data-advanced-table-content^="${elem.dataset.advancedTableContent}-"]`);childRowsAll.forEach((childRow=>{const dataContent=childRow.dataset.advancedTableContent;if(!dataContent){return}const ancestorIds=dataContent.split("-").slice(0,-1);const parentRowId=childRow.dataset.rowParent;const tableId=parentRowId?parentRowId.split("_").slice(0,-1).join("_"):"";const prefixedAncestorIds=ancestorIds.map((id=>`${tableId}_${id}`));const allAncestorsExpanded=prefixedAncestorIds.every((id=>_PbAdvancedTable.expandedRows.has(id)));const checkIfParentIsExpanded=()=>{if(dataContent.endsWith("sr")){const parentRowId2=childRow.dataset.rowParent;const isParentVisible=childRow.previousElementSibling.classList.contains("is-visible");if(parentRowId2){const isInSet=_PbAdvancedTable.expandedRows.has(parentRowId2);if(isInSet&&isParentVisible){return true}}}return false};if(allAncestorsExpanded||checkIfParentIsExpanded()){childRow.style.display="table-row";childRow.classList.add("is-visible")}else{childRow.style.display="none";childRow.classList.remove("is-visible")}}))}))}hideElement(elements){elements.forEach((elem=>{elem.style.display="none";elem.classList.remove("is-visible");if(_PbAdvancedTable.expandedRows.has(elem.id)){_PbAdvancedTable.expandedRows.delete(elem.id)}const childrenArray=elem.dataset.advancedTableContent.split("-");const currentDepth=parseInt(elem.dataset.rowDepth);if(childrenArray.length>currentDepth){const childRows=this.table.querySelectorAll(`[data-advanced-table-content^="${elem.dataset.advancedTableContent}-"]`);childRows.forEach((childRow=>{childRow.style.display="none";childRow.classList.remove("is-visible")}))}}))}toggleElement(elements){if(!elements.length)return;const isVisible=elements[0].classList.contains("is-visible");const isExpanded=toggleVisibility({isVisible:isVisible,onHide:()=>this.hideElement(elements),onShow:()=>this.showElement(elements)});isExpanded?this.displayUpArrow():this.displayDownArrow();const row=this.element.closest("tr");if(row){row.classList.toggle("bg-silver",isExpanded);row.classList.toggle("pb-bg-row-white",!isExpanded)}this.addBorderRadiusOnLastVisibleRow()}displayDownArrow(){setArrowVisibility({rootElement:this.element,downSelector:DOWN_ARROW_SELECTOR,upSelector:UP_ARROW_SELECTOR,showDownArrow:true})}displayUpArrow(){setArrowVisibility({rootElement:this.element,downSelector:DOWN_ARROW_SELECTOR,upSelector:UP_ARROW_SELECTOR,showDownArrow:false})}static handleToggleAllHeaders(element){const table=element.closest(".pb_table");const firstLevelButtons=table.querySelectorAll(".pb_advanced_table_body > .pb_table_tr[data-row-depth='0'] [data-advanced-table]");const allExpanded=Array.from(firstLevelButtons).every((button=>button.querySelector(UP_ARROW_SELECTOR).style.display==="inline-block"));if(allExpanded){firstLevelButtons.forEach((button=>{button.click();_PbAdvancedTable.expandedRows.delete(button.id)}))}else{firstLevelButtons.forEach((button=>{if(!_PbAdvancedTable.expandedRows.has(button.id)){button.click();_PbAdvancedTable.expandedRows.add(button.id)}}));_PbAdvancedTable.expandedRows.forEach((rowId=>{const nestedButton=table.querySelector(`[data-advanced-table][id="${rowId}"]`);if(nestedButton&&!firstLevelButtons.contains(nestedButton)){nestedButton.click()}}))}}static handleToggleAllSubRows(element,rowDepth){const table=element.closest(".pb_table");const parentRow=element.closest("tr");if(!parentRow){return}const rowParentId=parentRow.dataset.rowParent;const subRowButtons=table.querySelectorAll(`.pb_advanced_table_body > .pb_table_tr[data-row-depth='${rowDepth}'].pb_table_tr[data-row-parent='${rowParentId}'] [data-advanced-table]`);const allExpanded=Array.from(subRowButtons).every((button=>button.querySelector(UP_ARROW_SELECTOR).style.display==="inline-block"));if(allExpanded){subRowButtons.forEach((button=>{button.click();_PbAdvancedTable.expandedRows.delete(button.id)}))}else{subRowButtons.forEach((button=>{if(!_PbAdvancedTable.expandedRows.has(button.id)){button.click();_PbAdvancedTable.expandedRows.add(button.id)}}))}}};__publicField(_PbAdvancedTable,"expandedRows",new Set);__publicField(_PbAdvancedTable,"selectedRows",new Set);__publicField(_PbAdvancedTable,"isCollapsing",false);let PbAdvancedTable=_PbAdvancedTable;window.expandAllRows=element=>{PbAdvancedTable.handleToggleAllHeaders(element)};window.expandAllSubRows=(element,rowDepth)=>{PbAdvancedTable.handleToggleAllSubRows(element,rowDepth)};function updateAllAdvancedTableStickyHeights(){document.querySelectorAll(".pb_advanced_table").forEach((wrapper=>{PbAdvancedTable.updateStickyHeaderRowHeights(wrapper);PbAdvancedTable.updatePinnedRowsStickyTops(wrapper)}))}if(typeof document!=="undefined"){if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",updateAllAdvancedTableStickyHeights)}else{updateAllAdvancedTableStickyHeights()}}const FLAT_SELECTOR="[data-flat-advanced-table-select='true']";class PbFlatAdvancedTable extends PbEnhancedElement{static get selector(){return FLAT_SELECTOR}constructor(...args){super(...args);this.selectedRows=new Set}connect(){const table=this.element.closest("table");if(!table||table.dataset.flatAdvancedInit)return;table.dataset.flatAdvancedInit="true";const mainTable=this.element.closest(".pb_advanced_table");if(mainTable){updateSelectionActionBar(mainTable,0)}const updateCheckboxState=()=>{if(mainTable){mainTable.dataset.selectedRows=JSON.stringify(Array.from(this.selectedRows));updateSelectionActionBar(mainTable,this.selectedRows.size)}};const selectAllId=this.element.getAttribute("data-pb-checkbox-indeterminate-parent");const selectAllSelector=`#${selectAllId} input[type='checkbox']`;table.addEventListener("change",(e=>{const rowCb=e.target.closest(FLAT_SELECTOR+" input[type='checkbox']");const allCb=e.target.closest(selectAllSelector);if(!rowCb&&!allCb)return;if(rowCb){const id=rowCb.id;if(rowCb.checked)this.selectedRows.add(id);else this.selectedRows.delete(id);const tr=rowCb.closest("tr");tr==null?void 0:tr.classList.toggle("bg-row-selection",rowCb.checked);tr==null?void 0:tr.classList.toggle("pb-bg-row-white",!rowCb.checked)}if(allCb){const checked=allCb.checked;Array.from(table.querySelectorAll(FLAT_SELECTOR+" input[type='checkbox']")).forEach((cb=>{cb.checked=checked;const tr=cb.closest("tr");tr==null?void 0:tr.classList.toggle("bg-row-selection",checked);tr==null?void 0:tr.classList.toggle("pb-bg-row-white",!checked);const id=cb.id;if(checked)this.selectedRows.add(id);else this.selectedRows.delete(id)}))}updateCheckboxState()}))}}const NAV_SELECTOR="[data-pb-nav-tab]";const NAV_ITEM_SELECTOR="[data-pb-tab-target]";class PbNav extends PbEnhancedElement{static get selector(){return NAV_SELECTOR}connect(){this.hideAndAddEventListeners()}hideAndAddEventListeners(){const navItems=this.element.querySelectorAll(NAV_ITEM_SELECTOR);navItems.forEach((navItem=>{if(!navItem.className.includes("active")){this.changeContentDisplay(navItem.dataset.pbTabTarget,"none")}navItem.addEventListener("click",(event=>this.handleNavItemClick(event)))}))}handleNavItemClick(event){event.preventDefault();const navItem=event.target.closest(NAV_ITEM_SELECTOR);this.changeContentDisplay(navItem.dataset.pbTabTarget,"block");const navItems=this.element.querySelectorAll(NAV_ITEM_SELECTOR);navItems.forEach((navItemSelected=>{if(navItem!==navItemSelected){this.changeContentDisplay(navItemSelected.dataset.pbTabTarget,"none")}}))}changeContentDisplay(contentId,display){const content=document.getElementById(contentId);content.style.display=display}}const STAR_RATING_WRAPPER_SELECTOR="[data-pb-star-rating-wrapper]";const STAR_RATING_SELECTOR="[data-pb-star-rating]";const STAR_RATING_INPUT_DATA_SELECTOR="[data-pb-star-rating-input]";class PbStarRating extends PbEnhancedElement{static get selector(){return STAR_RATING_WRAPPER_SELECTOR}connect(){this.addEventListeners();this.handleFormReset();this.setDefaultValue()}addEventListeners(){this.element.querySelectorAll(STAR_RATING_SELECTOR).forEach((star=>{star.addEventListener("click",(event=>{const clickedStarId=event.currentTarget.id;this.updateStarColors(clickedStarId);this.updateHiddenInputValue(clickedStarId);this.clearFormValidation()}));star.addEventListener("mouseenter",(event=>{const hoveredStarId=event.currentTarget.id;this.updateStarHoverColors(hoveredStarId)}));star.addEventListener("mouseleave",(()=>{this.removeStarHoverColors()}));star.addEventListener("keydown",(event=>{if(event.key==="Enter"||event.key===" "){event.preventDefault();this.handleStarClick(star.id)}}))}))}handleStarClick(starId){this.updateStarColors(starId);this.updateHiddenInputValue(starId)}updateStarColors(clickedStarId){const allStars=this.element.querySelectorAll(STAR_RATING_SELECTOR);allStars.forEach((star=>{const starId=star.id;const icon=star.querySelector(".interactive-star-icon");if(icon){if(starId<=clickedStarId){if(star.classList.contains("yellow_star")){icon.classList.add("yellow-star-selected")}else if(star.classList.contains("primary_star_light")){icon.classList.add("primary-star-selected")}else if(star.classList.contains("primary_star_dark")){icon.classList.add("primary-star-selected")}else if(star.classList.contains("subtle_star_light")){icon.classList.add("subtle-star-selected")}else if(star.classList.contains("subtle_star_dark")){icon.classList.add("subtle-star-selected")}else{icon.classList.add("yellow-star-selected")}}else{icon.classList.remove("yellow-star-selected","primary-star-selected","subtle-star-selected")}icon.classList.remove("star-hovered")}}))}updateHiddenInputValue(value){const hiddenInput=this.element.querySelector(STAR_RATING_INPUT_DATA_SELECTOR);if(hiddenInput){hiddenInput.value=value}}updateStarHoverColors(hoveredStarId){const allStars=this.element.querySelectorAll(STAR_RATING_SELECTOR);allStars.forEach((star=>{const starId=star.id;const icon=star.querySelector(".interactive-star-icon");if(icon){if(starId<=hoveredStarId){if(!icon.classList.contains("yellow-star-selected")&&!icon.classList.contains("primary-star-selected")&&!icon.classList.contains("subtle-star-selected")){icon.classList.add("star-hovered")}}else{icon.classList.remove("star-hovered")}}}))}removeStarHoverColors(){const allStars=this.element.querySelectorAll(STAR_RATING_SELECTOR);allStars.forEach((star=>{const icon=star.querySelector(".interactive-star-icon");if(icon){if(!icon.classList.contains("yellow-star-selected")&&!icon.classList.contains("primary-star-selected")&&!icon.classList.contains("subtle-star-selected")){icon.classList.remove("star-hovered")}}}))}isStarSelected(){return this.element.querySelectorAll(".yellow-star-selected, .primary-star-selected, .subtle-star-selected").length>0}handleFormReset(){const form=this.element.closest("form");if(form){form.addEventListener("reset",(()=>{var _a;(_a=this.element.querySelector(STAR_RATING_INPUT_DATA_SELECTOR))==null?void 0:_a.setAttribute("value","");this.resetStarRatingValues()}))}}resetStarRatingValues(){const allStars=this.element.querySelectorAll(STAR_RATING_SELECTOR);allStars.forEach((star=>{const icon=star.querySelector(".interactive-star-icon");if(icon){icon.classList.remove("yellow-star-selected","primary-star-selected","subtle-star-selected")}}))}clearFormValidation(){const hiddenInput=this.element.querySelector(STAR_RATING_INPUT_DATA_SELECTOR);if(hiddenInput.checkValidity()){const errorLabelElement=this.element.querySelector(".pb_body_kit_negative");if(errorLabelElement){errorLabelElement.remove()}}}setDefaultValue(){const hiddenInput=this.element.querySelector(STAR_RATING_INPUT_DATA_SELECTOR);const defaultValue=hiddenInput.value;if(defaultValue){this.updateStarColors(defaultValue)}}}const RADIO_SELECTOR="[data-pb-radio-children]";const RADIO_WRAPPER_SELECTOR="[data-pb-radio-children-wrapper]";class PbRadio extends PbEnhancedElement{static get selector(){return RADIO_SELECTOR}connect(){const radioWrapperElement=this.element.parentElement.querySelector(RADIO_WRAPPER_SELECTOR);radioWrapperElement.addEventListener("click",(()=>{this.element.querySelector("input[type='radio']").click()}))}}const DRAGGABLE_SELECTOR="[data-pb-draggable]";const DRAGGABLE_CONTAINER=".pb_draggable_container";const NEEDS_CLONE=["shadow","outline","line"];class PbDraggable extends PbEnhancedElement{static get selector(){return DRAGGABLE_SELECTOR}connect(){this.state={items:[],dragData:{id:"",initialGroup:""},isDragging:"",activeContainer:""};this.draggedItem=null;this.draggedItemId=null;this.dragGhost=null;this.hasMultipleContainers=false;this.dragZoneType="";this.dragZoneColor="";document.addEventListener("DOMContentLoaded",(()=>this.bindEventListeners()))}setState(newState){this.state={...this.state,...newState};if(newState.items){this.element.dispatchEvent(new CustomEvent("pb-draggable-reorder",{detail:{reorderedItems:this.state.items,containerId:this.element.querySelector(DRAGGABLE_CONTAINER).id}}))}}bindEventListeners(){const containers=this.element.querySelectorAll(DRAGGABLE_CONTAINER);this.hasMultipleContainers=containers.length>1;this.element.querySelectorAll(".pb_draggable_item img").forEach((img=>img.setAttribute("draggable","false")));this.element.querySelectorAll(".pb_draggable_item").forEach((item=>{item.addEventListener("dragstart",this.handleDragStart.bind(this));item.addEventListener("dragend",this.handleDragEnd.bind(this));item.addEventListener("dragenter",this.handleDragEnter.bind(this))}));containers.forEach((c=>{c.addEventListener("dragover",this.handleDragOver.bind(this));c.addEventListener("drop",this.handleDrop.bind(this))}))}handleDragStart(event){if(event.target.tagName.toLowerCase()==="img"){event.preventDefault();return}const container=event.target.closest(DRAGGABLE_CONTAINER);this.draggedItem=event.target;this.draggedItemId=event.target.id;this.dragZoneType=this.element.dataset.dropZoneType||"";this.dragZoneColor=this.element.dataset.dropZoneColor||"";this.setState({dragData:{id:this.draggedItemId,initialGroup:container.id},isDragging:this.draggedItemId});this.draggedItem.classList.add("is_dragging",`drop_zone_${this.dragZoneType}`,`drop_zone_color_${this.dragZoneColor}`);if(event.dataTransfer){event.dataTransfer.effectAllowed="move";event.dataTransfer.setData("text/plain",this.draggedItemId);if(NEEDS_CLONE.includes(this.dragZoneType)){const ghost=this.draggedItem.cloneNode(true);ghost.classList.remove("is_dragging",`drop_zone_${this.dragZoneType}`,`drop_zone_color_${this.dragZoneColor}`);const{width:width,height:height}=this.draggedItem.getBoundingClientRect();Object.assign(ghost.style,{border:"none",width:`${width}px`,height:`${height}px`,position:"absolute",top:"-9999px",left:"-9999px",boxSizing:"border-box",zIndex:"9999"});document.body.appendChild(ghost);this.dragGhost=ghost;event.dataTransfer.setDragImage(ghost,width/2,height/2)}}if(this.dragZoneType!=="line"){requestAnimationFrame((()=>event.target.style.opacity="0.5"))}}handleDragEnter(event){if(!this.draggedItem||event.target===this.draggedItem)return;this.hasMultipleContainers?this.handleMultiContainerDragEnter(event):this.handleSingleContainerDragEnter(event)}handleSingleContainerDragEnter(event){const targetItem=event.target.closest(".pb_draggable_item");if(!targetItem)return;const container=targetItem.parentNode;const items=Array.from(container.children);const fromIdx=items.indexOf(this.draggedItem);const toIdx=items.indexOf(targetItem);if(fromIdx>toIdx){container.insertBefore(this.draggedItem,targetItem)}else{container.insertBefore(this.draggedItem,targetItem.nextSibling)}}handleMultiContainerDragEnter(event){const targetContainer=event.target.closest(DRAGGABLE_CONTAINER);const targetItem=event.target.closest(".pb_draggable_item");if(!targetContainer)return;if(!targetItem){const last=targetContainer.querySelector(".pb_draggable_item:last-child");last?targetContainer.insertBefore(this.draggedItem,last.nextSibling):targetContainer.appendChild(this.draggedItem);return}const items=Array.from(targetContainer.children);this.setState({items:items.map((i=>({id:i.id,container:targetContainer.id})))});const midY=targetItem.getBoundingClientRect().top+targetItem.getBoundingClientRect().height/2;if(event.clientY<midY){targetContainer.insertBefore(this.draggedItem,targetItem)}else{targetContainer.insertBefore(this.draggedItem,targetItem.nextSibling)}}handleDragOver(event){event.preventDefault();event.stopPropagation();this.hasMultipleContainers?this.handleMultiContainerDragOver(event):this.handleSingleContainerDragOver(event)}handleSingleContainerDragOver(event){const container=event.target.closest(DRAGGABLE_CONTAINER);if(container)container.classList.add("active_container")}handleMultiContainerDragOver(event){const container=event.target.matches(DRAGGABLE_CONTAINER)?event.target:event.target.closest(DRAGGABLE_CONTAINER);if(!container)return;this.setState({activeContainer:container.id});container.classList.add("active_container");const last=container.querySelector(".pb_draggable_item:last-child");if(!last||event.clientY>last.getBoundingClientRect().bottom){if(this.draggedItem&&this.draggedItem.parentNode!==container){container.appendChild(this.draggedItem)}}}handleDrop(event){event.preventDefault();event.stopPropagation();const container=event.target.matches(DRAGGABLE_CONTAINER)?event.target:event.target.closest(DRAGGABLE_CONTAINER);if(!container||!this.draggedItem)return;container.classList.remove("active_container");this.draggedItem.style.opacity="1";if(this.hasMultipleContainers&&!container.querySelector(".pb_draggable_item")){container.appendChild(this.draggedItem)}const reorderedItems=Array.from(this.element.querySelectorAll(".pb_draggable_item")).map((i=>({id:i.id,container:i.closest(DRAGGABLE_CONTAINER).id})));container.dataset.reorderedItems=JSON.stringify(reorderedItems);this.element.dispatchEvent(new CustomEvent("pb-draggable-reorder",{detail:{reorderedItems:reorderedItems,containerId:container.id}}));this.setState({items:reorderedItems,isDragging:"",activeContainer:""});this.draggedItem=null;this.draggedItemId=null}handleDragEnd(event){event.target.classList.remove("is_dragging",`drop_zone_${this.dragZoneType}`,`drop_zone_color_${this.dragZoneColor}`);event.target.style.opacity="1";if(this.dragGhost){document.body.removeChild(this.dragGhost);this.dragGhost=null}this.setState({isDragging:"",activeContainer:""});this.element.querySelectorAll(DRAGGABLE_CONTAINER).forEach((c=>c.classList.remove("active_container")));this.draggedItem=null;this.draggedItemId=null}}const OVERLAY_SELECTOR="[data-pb-overlay]";const OVERLAY_SCROLL_ELEMENT="[data-overlay-scroll-element]";const PREVIOUS_OVERLAY_CLASSNAME="[data-previous-overlay-classname]";const SUBSEQUENT_OVERLAY_CLASSNAME="[data-subsequent-overlay-classname]";class PbOverlay extends PbEnhancedElement{static get selector(){return OVERLAY_SELECTOR}get target(){return this.element.querySelector(OVERLAY_SCROLL_ELEMENT).children[0]}connect(){this.handleOverlayDynamic()}handleOverlayDynamic(){var _a,_b,_c;const isOverlayDynamic=(_a=this.element.dataset)==null?void 0:_a.overlayDynamic;if(isOverlayDynamic){const previousOverlayElement=this.element.querySelector(PREVIOUS_OVERLAY_CLASSNAME);const previousOverlayClassname=(_b=previousOverlayElement==null?void 0:previousOverlayElement.dataset)==null?void 0:_b.previousOverlayClassname;const subsequentOverlayElement=this.element.querySelector(SUBSEQUENT_OVERLAY_CLASSNAME);const subsequentOverlayClassname=(_c=subsequentOverlayElement==null?void 0:subsequentOverlayElement.dataset)==null?void 0:_c.subsequentOverlayClassname;const handleScrollChange=target=>{const{scrollLeft:scrollLeft,scrollWidth:scrollWidth,clientWidth:clientWidth}=target;const isScrollAtStart=scrollLeft===0;const isScrollAtEnd=scrollLeft+clientWidth>=scrollWidth-1;if(isScrollAtStart){previousOverlayElement.classList.remove(previousOverlayClassname)}else{previousOverlayElement.classList.add(previousOverlayClassname)}if(isScrollAtEnd){subsequentOverlayElement.classList.remove(subsequentOverlayClassname)}else{subsequentOverlayElement.classList.add(subsequentOverlayClassname)}};this.target.addEventListener("scroll",(event=>{handleScrollChange(event.target)}));handleScrollChange(this.target)}}disconnect(){var _a;if((_a=this.element.dataset)==null?void 0:_a.overlayDynamic){this.target.removeEventListener("scroll")}}}const SELECT_WRAPPER_SELECTOR="[data-pb-select]";const SELECT_VALIDATION_MESSAGE_CLASS$1=".pb_body_kit_negative";class PbSelect extends PbEnhancedElement{static get selector(){return SELECT_WRAPPER_SELECTOR}connect(){this.setValidationMessage()}setValidationMessage(){var _a;const validationMessage=(_a=this.element.dataset)==null?void 0:_a.validationMessage;if(validationMessage){const selectElement=this.element.querySelector("select");const setErrorTextContent=(text,timeout)=>{setTimeout((()=>{const errorMessageElement=this.element.querySelector(SELECT_VALIDATION_MESSAGE_CLASS$1);if(errorMessageElement){errorMessageElement.textContent=text}else{setErrorTextContent(text,100)}}),timeout)};selectElement.addEventListener("change",(e=>{if(!e.target.checkValidity()){setErrorTextContent(validationMessage,300)}}))}}}const DIALOG_WRAPPER_SELECTOR="[data-pb-dialog-wrapper]";class PbDialog extends PbEnhancedElement{constructor(){super(...arguments);__publicField(this,"handleCustomEvent",(event=>{var _a,_b,_c,_d,_e,_f;const dialogId=((_a=event.detail)==null?void 0:_a.dialogId)||((_b=this.element.querySelector("dialog"))==null?void 0:_b.id);const dialog=dialogId&&document.getElementById(dialogId);if(!dialog){console.warn(`[PbDialog] Could not find dialog with ID '${dialogId}'`);return}this.setupDialog();const action=((_c=event.detail)==null?void 0:_c.action)||"open";const knownActions=["open","close","clickConfirm","clickCancel"];if(knownActions.includes(action)){switch(action){case"open":if(!dialog.open)dialog.showModal();break;case"close":if(dialog.open)dialog.close((_d=event.detail)==null?void 0:_d.returnValue);break;case"clickConfirm":this.triggerButtonClick(dialog,event,"confirm");break;case"clickCancel":this.triggerButtonClick(dialog,event,"cancel");break}}else if(typeof((_e=event.detail)==null?void 0:_e.customAction)==="function"){event.detail.customAction({dialog:dialog,event:event})}else if((_f=window.pbDialogActions)==null?void 0:_f[action]){window.pbDialogActions[action]({dialog:dialog,event:event})}else{console.warn(`[PbDialog] Unknown action: ${action}`)}}))}static get selector(){return DIALOG_WRAPPER_SELECTOR}connect(){var _a;this.dialogElement=this.element.querySelector(".pb_dialog_rails");this.dialogId=(_a=this.dialogElement)==null?void 0:_a.id;this.managedTriggers=new Set;this.domContentLoadedHandler=()=>this.setupDialog();this.turboFrameLoadHandler=()=>this.setupDialog();window.addEventListener("DOMContentLoaded",this.domContentLoadedHandler);window.addEventListener("turbo:frame-load",this.turboFrameLoadHandler);const customEventTypeString=this.element.dataset.customEventType;if(customEventTypeString&&!this.element.hasAttribute("data-custom-event-handled")){this.customEventTypes=customEventTypeString.split(",").map((e=>e.trim())).filter(Boolean);this.customEventTypes.forEach((eventType=>{window.addEventListener(eventType,this.handleCustomEvent)}));this.element.setAttribute("data-custom-event-handled","true")}}disconnect(){if(this.domContentLoadedHandler){window.removeEventListener("DOMContentLoaded",this.domContentLoadedHandler)}if(this.turboFrameLoadHandler){window.removeEventListener("turbo:frame-load",this.turboFrameLoadHandler)}if(this.customEventTypes&&Array.isArray(this.customEventTypes)){this.customEventTypes.forEach((eventType=>{window.removeEventListener(eventType,this.handleCustomEvent)}))}this.managedTriggers.forEach((trigger=>{if(trigger._openDialogClickHandler){trigger.removeEventListener("click",trigger._openDialogClickHandler);delete trigger._openDialogClickHandler}if(trigger._closeDialogClickHandler){trigger.removeEventListener("click",trigger._closeDialogClickHandler);delete trigger._closeDialogClickHandler}}));if(this.dialogElement&&this.dialogElement._outsideClickHandler){this.dialogElement.removeEventListener("mousedown",this.dialogElement._outsideClickHandler);delete this.dialogElement._outsideClickHandler}}triggerButtonClick(dialog,event,type){var _a,_b;const buttonId=((_a=event.detail)==null?void 0:_a[`${type}ButtonId`])||((_b=dialog.closest("[data-pb-dialog-wrapper]"))==null?void 0:_b.dataset[`${type}ButtonId`]);const button=buttonId?document.getElementById(buttonId):dialog.querySelector(`[data-${type}-button]`);if(button){button.click()}else{console.warn(`[PbDialog] Could not find ${type} button for dialog`)}}setupDialog(){if(!this.dialogId)return;const openTrigger=document.querySelectorAll(`[data-open-dialog="${this.dialogId}"]`);const closeTrigger=document.querySelectorAll(`[data-close-dialog="${this.dialogId}"]`);const dialogs=this.dialogElement?[this.dialogElement]:[];const loadingButton=document.querySelector('[data-disable-with="Loading"]');if(loadingButton&&!loadingButton.dataset.listenerAttached){loadingButton.addEventListener("click",(function(){const okayLoadingButton=document.querySelector('[data-disable-with="Loading"]');const cancelButton=document.querySelector('[data-disable-cancel-with="Loading"]');let currentClass=okayLoadingButton.className;let cancelClass=cancelButton?cancelButton.className:"";let newClass=currentClass.replace("_enabled","_disabled_loading");let newCancelClass=cancelClass.replace("_enabled","_disabled");okayLoadingButton.disabled=true;if(cancelButton)cancelButton.disabled=true;okayLoadingButton.className=newClass;if(cancelButton)cancelButton.className=newCancelClass}));loadingButton.dataset.listenerAttached="true"}openTrigger.forEach((open=>{const originalClickHandler=open._openDialogClickHandler;if(originalClickHandler)open.removeEventListener("click",originalClickHandler);open._openDialogClickHandler=()=>{const openTriggerData=open.dataset.openDialog;const targetDialogOpen=document.getElementById(openTriggerData);if(targetDialogOpen&&!targetDialogOpen.open)targetDialogOpen.showModal()};open.addEventListener("click",open._openDialogClickHandler);this.managedTriggers.add(open)}));closeTrigger.forEach((close=>{const originalClickHandler=close._closeDialogClickHandler;if(originalClickHandler)close.removeEventListener("click",originalClickHandler);close._closeDialogClickHandler=()=>{const closeTriggerData=close.dataset.closeDialog;const targetDialogClose=document.getElementById(closeTriggerData);if(targetDialogClose)targetDialogClose.close()};close.addEventListener("click",close._closeDialogClickHandler);this.managedTriggers.add(close)}));dialogs.forEach((dialogElement=>{const originalMousedownHandler=dialogElement._outsideClickHandler;if(originalMousedownHandler)dialogElement.removeEventListener("mousedown",originalMousedownHandler);dialogElement._outsideClickHandler=event=>{const dialogParentDataset=dialogElement.parentElement.dataset;if(dialogParentDataset.overlayClick==="overlay_close")return;const dialogModal=event.target.getBoundingClientRect();const clickedOutsideDialogModal=event.clientX<dialogModal.left||event.clientX>dialogModal.right||event.clientY<dialogModal.top||event.clientY>dialogModal.bottom;if(clickedOutsideDialogModal){dialogElement.close();event.stopPropagation()}};dialogElement.addEventListener("mousedown",dialogElement._outsideClickHandler)}))}}const DATE_PICKER_WRAPPER_SELECTOR="[data-pb-date-picker]";const SELECT_VALIDATION_MESSAGE_CLASS=".pb_body_kit_negative";class PbDatePicker extends PbEnhancedElement{static get selector(){return DATE_PICKER_WRAPPER_SELECTOR}connect(){this.setValidationMessage()}setValidationMessage(){var _a;const validationMessage=(_a=this.element.dataset)==null?void 0:_a.validationMessage;const inputElement=this.element.querySelector("input");if(validationMessage){const setErrorTextContent=(text,timeout)=>{setTimeout((()=>{const errorMessageElement=this.element.querySelector(SELECT_VALIDATION_MESSAGE_CLASS);if(errorMessageElement){errorMessageElement.textContent=text}else{setErrorTextContent(text,100)}}),timeout)};inputElement.addEventListener("change",(e=>{if(!e.target.checkValidity()){setErrorTextContent(validationMessage,300)}}))}}}const MULTI_LEVEL_SELECT_SELECTOR="[data-multi_level_select_form]";class PbMultiLevelSelect extends PbEnhancedElement{static get selector(){return MULTI_LEVEL_SELECT_SELECTOR}get target(){return this.element.querySelector(".pb_body_kit_negative")}connect(){this.addEventListeners();this.observeHiddenInputs();this.observeRogueErrorInsideInnerContainer()}addEventListeners(){const inputElement=this.element.querySelector("input");inputElement.addEventListener("invalid",(()=>{this.handleErrorLabel(300)}));inputElement.addEventListener("blur",(()=>{this.justBlurred=true;setTimeout((()=>{this.justBlurred=false}),300)}))}handleErrorLabel(delay){setTimeout((()=>{const errorLabelElement=this.target;const wrapper=this.element.querySelector(".wrapper");if(errorLabelElement){errorLabelElement.remove();if(wrapper){if(wrapper.querySelector(".pb_body_kit_negative")){wrapper.querySelector(".pb_body_kit_negative").remove()}wrapper.appendChild(errorLabelElement)}this.element.classList.add("error")}else{this.handleErrorLabel(100)}}),delay)}observeHiddenInputs(){const container=this.element.querySelector(".input_inner_container");if(!container)return;this.mutationObserver=new MutationObserver((()=>{const hiddenInputs=container.querySelectorAll('input[type="hidden"]');if(hiddenInputs.length>0){this.clearError()}}));this.mutationObserver.observe(container,{childList:true})}observeRogueErrorInsideInnerContainer(){const container=this.element.querySelector(".input_inner_container");this.rogueErrorObserver=new MutationObserver((mutations=>{for(const mutation of mutations){for(const node of mutation.addedNodes){if(node.nodeType===Node.ELEMENT_NODE&&node.classList.contains("pb_body_kit_negative")){if(this.justBlurred){node.remove()}}}}}));this.rogueErrorObserver.observe(container,{childList:true,subtree:true})}clearError(e){const errorLabelElement=this.target;if(errorLabelElement){errorLabelElement.remove();this.element.classList.remove("error");this.element.querySelector("input").value=e.detail.value}}}const INDETERMINATE_MAIN_CHECKBOX_SELECTOR="[data-pb-checkbox-indeterminate-main='true']";class PbCheckbox extends PbEnhancedElement{static get selector(){return INDETERMINATE_MAIN_CHECKBOX_SELECTOR}connect(){const mainCheckboxWrapper=this.element;const mainCheckbox=mainCheckboxWrapper.querySelector("input");const directChildCheckboxes=document.querySelectorAll(`[data-pb-checkbox-indeterminate-parent="${this.element.id}"] input[type="checkbox"]`);const getAllDescendantCheckboxes=()=>{const descendants=[];const queue=[...directChildCheckboxes];while(queue.length>0){const checkbox=queue.shift();descendants.push(checkbox);const checkboxWrapper=checkbox.closest('[data-pb-checkbox-indeterminate-main="true"]');if(checkboxWrapper){const childCheckboxes=document.querySelectorAll(`[data-pb-checkbox-indeterminate-parent="${checkboxWrapper.id}"] input[type="checkbox"]`);queue.push(...childCheckboxes)}}const nonMainChildCheckboxes=document.querySelectorAll(`[data-pb-checkbox-indeterminate-parent="${this.element.id}"] input[type="checkbox"]`);nonMainChildCheckboxes.forEach((cb=>{if(!descendants.includes(cb)){descendants.push(cb)}}));return descendants};const getCheckboxState=checkboxes=>{const checkedCount=checkboxes.filter((cb=>cb.checked)).length;const totalCount=checkboxes.length;return{allChecked:checkedCount===totalCount,noneChecked:checkedCount===0,indeterminate:!(checkedCount===totalCount||checkedCount===0),checkedCount:checkedCount,totalCount:totalCount}};const updateCheckboxVisualState=(checkbox,isIndeterminate,isChecked)=>{checkbox.indeterminate=isIndeterminate;checkbox.checked=isChecked};const updateCheckboxLabelAndIcons=(wrapper,isIndeterminate,checkedCount)=>{const checkAllLabel=wrapper.dataset.pbCheckboxIndeterminateMainLabelCheck??"Check All";const uncheckAllLabel=wrapper.dataset.pbCheckboxIndeterminateMainLabelUncheck??"Uncheck All";const text=checkedCount===0?checkAllLabel:uncheckAllLabel;const bodyKitElement=wrapper.getElementsByClassName("pb_body_kit")[0];if(bodyKitElement){bodyKitElement.textContent=text}const iconSpan=wrapper.querySelector("[data-pb-checkbox-icon-span]");if(iconSpan){const iconClassToAdd=isIndeterminate?"pb_checkbox_indeterminate":"pb_checkbox_checkmark";const iconClassToRemove=isIndeterminate?"pb_checkbox_checkmark":"pb_checkbox_indeterminate";iconSpan.classList.add(iconClassToAdd);iconSpan.classList.remove(iconClassToRemove)}const indeterminateIcon=wrapper.getElementsByClassName("indeterminate_icon")[0];const checkIcon=wrapper.getElementsByClassName("check_icon")[0];if(indeterminateIcon){indeterminateIcon.classList.toggle("hidden",!isIndeterminate)}if(checkIcon){checkIcon.classList.toggle("hidden",isIndeterminate)}};const updateMainCheckbox=()=>{const allDescendantCheckboxes2=getAllDescendantCheckboxes();const state=getCheckboxState(allDescendantCheckboxes2);updateCheckboxVisualState(mainCheckbox,state.indeterminate,state.allChecked);updateCheckboxLabelAndIcons(mainCheckboxWrapper,state.indeterminate,state.checkedCount)};const updateParentCheckboxes=()=>{const parentId=mainCheckboxWrapper.dataset.pbCheckboxIndeterminateParent;if(parentId){const parentCheckbox=document.getElementById(parentId);if(parentCheckbox){const parentWrapper=parentCheckbox.closest('[data-pb-checkbox-indeterminate-main="true"]');if(parentWrapper){const parentInstance=parentWrapper.pbCheckboxInstance;if(parentInstance&&parentInstance.updateMainCheckbox){parentInstance.updateMainCheckbox();parentInstance.updateParentCheckboxes()}}}}};const setupNonMainCheckboxUpdates=()=>{const allCheckboxesWithChildren=document.querySelectorAll('input[type="checkbox"]');allCheckboxesWithChildren.forEach((cb=>{const checkboxWrapper=cb.closest('[data-pb-checkbox-indeterminate-main="true"]');if(checkboxWrapper&&checkboxWrapper!==mainCheckboxWrapper){return}const childCheckboxes=document.querySelectorAll(`[data-pb-checkbox-indeterminate-parent="${cb.id}"] input[type="checkbox"]`);if(childCheckboxes.length>0){childCheckboxes.forEach((childCb=>{childCb.addEventListener("change",(()=>{const state=getCheckboxState(Array.from(childCheckboxes));updateCheckboxVisualState(cb,state.indeterminate,state.allChecked);const mainCheckboxes=document.querySelectorAll('[data-pb-checkbox-indeterminate-main="true"]');mainCheckboxes.forEach((mainCb=>{const mainInstance=mainCb.pbCheckboxInstance;if(mainInstance&&mainInstance.updateMainCheckbox){setTimeout((()=>{mainInstance.updateMainCheckbox()}),0)}}))}))}))}}))};updateMainCheckbox();mainCheckbox.addEventListener("change",(function(){const allDescendantCheckboxes2=getAllDescendantCheckboxes();const state=getCheckboxState(allDescendantCheckboxes2);if(state.indeterminate){allDescendantCheckboxes2.forEach((cb=>{cb.checked=false;cb.dispatchEvent(new Event("checkbox-programmatic-change",{bubbles:true}))}));this.checked=false}else{allDescendantCheckboxes2.forEach((cb=>{cb.checked=this.checked;cb.dispatchEvent(new Event("checkbox-programmatic-change",{bubbles:true}))}))}updateMainCheckbox();setTimeout((()=>{updateParentCheckboxes()}),0);triggerAllMainCheckboxUpdates()}));directChildCheckboxes.forEach((cb=>{cb.addEventListener("change",updateMainCheckbox)}));const allDescendantCheckboxes=getAllDescendantCheckboxes();allDescendantCheckboxes.forEach((cb=>{if(!Array.from(directChildCheckboxes).includes(cb)){cb.addEventListener("change",updateMainCheckbox)}}));const allChildCheckboxes=document.querySelectorAll(`[data-pb-checkbox-indeterminate-parent="${this.element.id}"] input[type="checkbox"]`);allChildCheckboxes.forEach((cb=>{if(!allDescendantCheckboxes.includes(cb)){cb.addEventListener("change",updateMainCheckbox)}}));let updateTimeout=null;const triggerAllMainCheckboxUpdates=()=>{if(updateTimeout){clearTimeout(updateTimeout)}updateTimeout=setTimeout((()=>{const mainCheckboxes=document.querySelectorAll('[data-pb-checkbox-indeterminate-main="true"]');mainCheckboxes.forEach((mainCb=>{const mainInstance=mainCb.pbCheckboxInstance;if(mainInstance&&mainInstance.updateMainCheckbox){mainInstance.updateMainCheckbox()}}))}),10)};const originalUpdateMainCheckbox=updateMainCheckbox;const enhancedUpdateMainCheckbox=()=>{originalUpdateMainCheckbox();triggerAllMainCheckboxUpdates()};mainCheckboxWrapper.pbCheckboxInstance={updateMainCheckbox:enhancedUpdateMainCheckbox,updateParentCheckboxes:updateParentCheckboxes};setupNonMainCheckboxUpdates()}}const BUTTON_SELECTOR="[data-pb-button-managed]";class PbButton extends PbEnhancedElement{static get selector(){return BUTTON_SELECTOR}connect(){this._attrManaged=this._attributesPresent();this.element._pbButton=this;this._onClick=e=>{if(this.isDisabled()){e.preventDefault();e.stopImmediatePropagation()}};this.element.addEventListener("click",this._onClick,true);if(this._attrManaged)this._syncClassesFromAttributes();this._observer=new MutationObserver((()=>{this._attrManaged=true;this._syncClassesFromAttributes()}));this._observer.observe(this.element,{attributes:true,attributeFilter:["disabled","aria-disabled"]})}disconnect(){var _a;this.element.removeEventListener("click",this._onClick,true);(_a=this._observer)==null?void 0:_a.disconnect();delete this.element._pbButton}disable(){this.setDisabled(true)}enable(){this.setDisabled(false)}setDisabled(state){if(this._isButton()){state?this.element.setAttribute("disabled","disabled"):this.element.removeAttribute("disabled")}else{state?this.element.setAttribute("aria-disabled","true"):this.element.removeAttribute("aria-disabled")}this._attrManaged=true;this._applyClassState(state)}isDisabled(){if(this._isButton()){if(this.element.hasAttribute("disabled"))return true;if(this._attrManaged&&!this.element.hasAttribute("disabled"))return false}else{const aria=this.element.getAttribute("aria-disabled");if(aria==="true")return true;if(this._attrManaged&&aria!=="true")return false}return this.element.classList.contains("pb_button_disabled")}_isButton(){return this.element.tagName==="BUTTON"}_attributesPresent(){return this.element.hasAttribute("disabled")||this.element.hasAttribute("aria-disabled")}_syncClassesFromAttributes(){const state=this._attrDisabledState();const disabled=state===null?false:state;this._applyClassState(disabled)}_attrDisabledState(){if(this._isButton()){return this.element.hasAttribute("disabled")?true:null}else{const aria=this.element.getAttribute("aria-disabled");if(aria==="true")return true;if(aria==="false")return false;return this.element.hasAttribute("aria-disabled")?false:null}}_applyClassState(disabled){this.element.classList.toggle("pb_button_disabled",!!disabled);this.element.classList.toggle("pb_button_enabled",!disabled)}}const TIME_PICKER_SELECTOR="[data-pb-time-picker]";const VALIDATION_MESSAGE_CLASS=".pb_body_kit_negative";class PbTimePicker extends PbEnhancedElement{static get selector(){return TIME_PICKER_SELECTOR}connect(){this.setValidationMessage()}setValidationMessage(){var _a;const element=this.element;const validationMessage=(_a=element.dataset)==null?void 0:_a.validationMessage;const inputElement=element.querySelector("input");if(validationMessage){const setErrorTextContent=(text,timeout)=>{setTimeout((()=>{const errorMessageElement=element.querySelector(VALIDATION_MESSAGE_CLASS);if(errorMessageElement){errorMessageElement.textContent=text}else{setErrorTextContent(text,100)}}),timeout)};inputElement==null?void 0:inputElement.addEventListener("change",(e=>{const target=e.target;if(!target.checkValidity()){setErrorTextContent(validationMessage,300)}}))}}}const KIT_SELECTOR='[class^="pb_"][class*="_kit"]';const ERROR_MESSAGE_SELECTOR=".pb_body_kit_negative";const FORM_SELECTOR='form[data-pb-form-validation="true"]';const REQUIRED_FIELDS_SELECTOR="input[required],textarea[required],select[required]";const PHONE_NUMBER_VALIDATION_ERROR_SELECTOR='[data-pb-phone-validation-error="true"]';const FIELD_EVENTS=["change","valid","invalid"];class PbFormValidation extends PbEnhancedElement{static get selector(){return FORM_SELECTOR}connect(){this.formValidationFields.forEach((field=>{const isPhoneNumberInput=field.closest(".pb_phone_number_input");if(isPhoneNumberInput)return;const isTimePickerInput=field.closest(".pb_time_picker");if(isTimePickerInput)return;FIELD_EVENTS.forEach((e=>{field.addEventListener(e,debounce((event=>{this.validateFormField(event)}),250),false)}))}));this.element.addEventListener("submit",(event=>{setTimeout((()=>{if(this.hasPhoneNumberValidationErrors()){event.preventDefault();return false}}),0)}))}validateFormField(event){event.preventDefault();const{target:target}=event;target.setCustomValidity("");const isValid=event.target.validity.valid;if(isValid){this.clearError(target)}else{this.showValidationMessage(target)}}showValidationMessage(target){const{parentElement:parentElement}=target;const kitElement=parentElement.closest(KIT_SELECTOR);if(!kitElement)return;const isPhoneNumberInput=kitElement.classList.contains("pb_phone_number_input");const isTimePickerInput=kitElement.classList.contains("pb_time_picker");this.clearError(target);kitElement.classList.add("error");if(!isPhoneNumberInput&&!isTimePickerInput){const errorMessageContainer=this.errorMessageContainer;if(target.dataset.message)target.setCustomValidity(target.dataset.message);errorMessageContainer.innerHTML=target.validationMessage;parentElement.appendChild(errorMessageContainer)}}clearError(target){const{parentElement:parentElement}=target;const kitElement=parentElement.closest(KIT_SELECTOR);if(kitElement)kitElement.classList.remove("error");const errorMessageContainer=parentElement.querySelector(ERROR_MESSAGE_SELECTOR);if(errorMessageContainer)errorMessageContainer.remove()}hasPhoneNumberValidationErrors(){const phoneNumberErrors=this.element.querySelectorAll(PHONE_NUMBER_VALIDATION_ERROR_SELECTOR);return phoneNumberErrors.length>0}get errorMessageContainer(){const errorContainer=document.createElement("div");const kitClassName=ERROR_MESSAGE_SELECTOR.replace(/\./,"");errorContainer.classList.add(kitClassName);return errorContainer}get formValidationFields(){return this._formValidationFields=this._formValidationFields||this.element.querySelectorAll(REQUIRED_FIELDS_SELECTOR)}}window.PbFormValidation=PbFormValidation;const kits=[PbTextInput,PbCopyButton,PbCollapsible,PbPopover,PbTooltip,PbFixedConfirmationToast,PbTypeahead,PbTable,PbTextarea,PbDropdown,PbAdvancedTable,PbFlatAdvancedTable,PbNav,PbStarRating,PbRadio,PbDraggable,PbOverlay,PbSelect,PbDialog,PbDatePicker,PbMultiLevelSelect,PbCheckbox,PbButton,PbTimePicker,PbFormValidation];kits.forEach((kit=>PbKitRegistry$1.register(kit)));PbKitRegistry$1.start();addCopyEventListeners();window.PbFormValidation=PbFormValidation;window.formHelper=formHelper;window.datePickerHelper=datePickerHelper;
@@ -21,6 +21,7 @@ module Playbook
21
21
  html_options[:id] = props[:input_options][:id]
22
22
  html_options[:class] = props[:input_options][:class] if props[:input_options][:class]
23
23
  html_options[:data] = (html_options[:data] || {}).merge(props[:input_options][:data] || {})
24
+ html_options[:data][:message] = props[:validation_message] if props[:validation_message].present?
24
25
 
25
26
  input = super(name, collection, value_method, text_method, options, html_options)
26
27
 
@@ -31,6 +31,7 @@ module Playbook
31
31
  label: nil,
32
32
  placeholder: props[:placeholder],
33
33
  required: props[:required],
34
+ validation: props[:validation_message].present? ? { message: props[:validation_message] } : {},
34
35
  }
35
36
  )
36
37
 
@@ -21,6 +21,7 @@ module Playbook
21
21
  html_options[:id] = props[:input_options][:id]
22
22
  html_options[:class] = props[:input_options][:class] if props[:input_options][:class]
23
23
  html_options[:data] = (html_options[:data] || {}).merge(props[:input_options][:data] || {})
24
+ html_options[:data][:message] = props[:validation_message] if props[:validation_message].present?
24
25
 
25
26
  input = super(name, choices, options, html_options, &block)
26
27
 
@@ -21,6 +21,7 @@ module Playbook
21
21
  html_options[:id] = props[:input_options][:id]
22
22
  html_options[:class] = props[:input_options][:class] if props[:input_options][:class]
23
23
  html_options[:data] = (html_options[:data] || {}).merge(props[:input_options][:data] || {})
24
+ html_options[:data][:message] = props[:validation_message] if props[:validation_message].present?
24
25
 
25
26
  input = @template.time_zone_select(@object_name, name, choices, options, html_options)
26
27
 
@@ -47,8 +47,23 @@ module Playbook
47
47
  capture do
48
48
  concat form_with(**options, &block)
49
49
  concat javascript_tag(<<~JS)
50
- window.addEventListener("DOMContentLoaded", function() { PbFormValidation.start() })
51
- window.addEventListener("DOMContentLoaded", () => formHelper())
50
+ (function() {
51
+ // PbFormValidation is registered with PbKitRegistry and starts automatically
52
+ // when the playbook-rails bundle loads. The MutationObserver in PbKitRegistry
53
+ // handles dynamically added forms (including Turbo navigations).
54
+ // This inline script ensures formHelper runs for this form.
55
+ var initForm = function() {
56
+ if (typeof formHelper === 'function') {
57
+ formHelper();
58
+ }
59
+ };
60
+
61
+ if (document.readyState === 'loading') {
62
+ document.addEventListener('DOMContentLoaded', initForm, { once: true });
63
+ } else {
64
+ initForm();
65
+ }
66
+ })();
52
67
  JS
53
68
  end
54
69
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Playbook
4
4
  PREVIOUS_VERSION = "16.5.0"
5
- VERSION = "16.6.0.pre.rc.2"
5
+ VERSION = "16.6.0.pre.rc.3"
6
6
  end
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: 16.6.0.pre.rc.2
4
+ version: 16.6.0.pre.rc.3
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: 2026-04-08 00:00:00.000000000 Z
12
+ date: 2026-04-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -998,6 +998,8 @@ files:
998
998
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.html.erb
999
999
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.jsx
1000
1000
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.md
1001
+ - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dialog_submission.jsx
1002
+ - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dialog_submission.md
1001
1003
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_disabled.html.erb
1002
1004
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_disabled.jsx
1003
1005
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.html.erb
@@ -1690,6 +1692,8 @@ files:
1690
1692
  - app/pb_kits/playbook/pb_form/docs/_form_form_with_loading.md
1691
1693
  - app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb
1692
1694
  - app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.md
1695
+ - app/pb_kits/playbook/pb_form/docs/_form_form_with_validation_msg.html.erb
1696
+ - app/pb_kits/playbook/pb_form/docs/_form_form_with_validation_msg.md
1693
1697
  - app/pb_kits/playbook/pb_form/docs/_form_with_required_indicator.html.erb
1694
1698
  - app/pb_kits/playbook/pb_form/docs/_form_with_required_indicator.md
1695
1699
  - app/pb_kits/playbook/pb_form/docs/example.yml