playbook_ui 15.0.0.pre.alpha.PLAY2425textinputaccessibility10328 → 15.0.0.pre.alpha.PLAY2467contactkitinternational10329
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 +4 -4
- data/app/pb_kits/playbook/pb_contact/_contact.tsx +5 -0
- data/app/pb_kits/playbook/pb_contact/contact.rb +4 -0
- data/app/pb_kits/playbook/pb_contact/contact.test.js +21 -1
- data/app/pb_kits/playbook/pb_contact/docs/_contact_default.html.erb +16 -1
- data/app/pb_kits/playbook/pb_contact/docs/_contact_default.jsx +15 -0
- data/app/pb_kits/playbook/pb_contact/docs/_contact_default.md +5 -0
- data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.html.erb +6 -0
- data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.jsx +6 -0
- data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +6 -14
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.html.erb +4 -8
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.jsx +0 -5
- data/app/pb_kits/playbook/pb_text_input/text_input.html.erb +1 -3
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +0 -6
- data/dist/chunks/{_line_graph-CNzFtnv4.js → _line_graph-CApw7aQD.js} +1 -1
- data/dist/chunks/{_typeahead-BKANeKyS.js → _typeahead-J1_avqdO.js} +1 -1
- data/dist/chunks/{_weekday_stacked-suWnVN78.js → _weekday_stacked-BSRRJewP.js} +2 -2
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +2 -2
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +5 -5
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.md +0 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5f20e205eef51d77bf9ce4b5694d675e30bfbe4ef8107c96b016868302ccaba3
         | 
| 4 | 
            +
              data.tar.gz: 89c8ffe59230989390b0cb8031a47b3191bd5463b190f62465b10679a2dbf531
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6c25d0d330b79ffdc47501616db7bdbe0577c48ce9fa5d33b8ea7d6058c9ce98674d72664ca312f6d79ddaf59b662701b8a136bb0ca589447c4ea8b72bbf97a8
         | 
| 7 | 
            +
              data.tar.gz: f42561f7ad3f69134d46779d00d75c0aff2998c042a0c6ef5839131c80f788559de516772297a606049a2827222b863d0b434febf32ca28d0aadca4cb8e7b0c4
         | 
| @@ -17,6 +17,7 @@ const contactTypeMap: { [key: string]: string } = { | |
| 17 17 | 
             
              'work': 'phone-office',
         | 
| 18 18 | 
             
              'work-cell': 'phone-laptop',
         | 
| 19 19 | 
             
              'wrong-phone': 'phone-slash',
         | 
| 20 | 
            +
              'international': 'globe',
         | 
| 20 21 | 
             
            }
         | 
| 21 22 |  | 
| 22 23 | 
             
            const envelopeIcon = getAllIcons()["envelope"].icon as unknown as { [key: string]: SVGElement }
         | 
| @@ -24,6 +25,10 @@ const envelopeIcon = getAllIcons()["envelope"].icon as unknown as { [key: string | |
| 24 25 | 
             
            const formatContact = (contactString: string, contactType: string) => {
         | 
| 25 26 | 
             
              if (contactType === 'email') return contactString
         | 
| 26 27 |  | 
| 28 | 
            +
              // International phone numbers are unformatted
         | 
| 29 | 
            +
              if (contactType === 'international') return contactString
         | 
| 30 | 
            +
              
         | 
| 31 | 
            +
              // Format US numbers
         | 
| 27 32 | 
             
              const cleaned = contactString.replace(/\D/g, '')
         | 
| 28 33 | 
             
              const phoneNumber = cleaned.match(/^(1|)?(\d{3})(\d{3})(\d{4})$/)
         | 
| 29 34 |  | 
| @@ -29,6 +29,8 @@ module Playbook | |
| 29 29 | 
             
                      "phone-slash"
         | 
| 30 30 | 
             
                    when "extension"
         | 
| 31 31 | 
             
                      "phone-plus"
         | 
| 32 | 
            +
                    when "international"
         | 
| 33 | 
            +
                      "globe"
         | 
| 32 34 | 
             
                    else # "unknown" || "other"
         | 
| 33 35 | 
             
                      "phone"
         | 
| 34 36 | 
             
                    end
         | 
| @@ -39,6 +41,8 @@ module Playbook | |
| 39 41 | 
             
                      contact_value
         | 
| 40 42 | 
             
                    elsif contact_type == "extension" && contact_value.match(/^\d{4}$/)
         | 
| 41 43 | 
             
                      contact_value
         | 
| 44 | 
            +
                    elsif contact_type == "international"
         | 
| 45 | 
            +
                      contact_value
         | 
| 42 46 | 
             
                    else
         | 
| 43 47 | 
             
                      number_to_phone(formatted_value, area_code: true)
         | 
| 44 48 | 
             
                    end
         | 
| @@ -66,6 +66,12 @@ test('returns correct icon', () => { | |
| 66 66 | 
             
                      contactValue="1234"
         | 
| 67 67 | 
             
                      data={{ testid: 'test-extension' }}
         | 
| 68 68 | 
             
                  />
         | 
| 69 | 
            +
                  <Contact
         | 
| 70 | 
            +
                      contactDetail="International"
         | 
| 71 | 
            +
                      contactType="international"
         | 
| 72 | 
            +
                      contactValue="+44 20 7946 0958"
         | 
| 73 | 
            +
                      data={{ testid: 'test-international' }}
         | 
| 74 | 
            +
                  />
         | 
| 69 75 | 
             
                  <Contact
         | 
| 70 76 | 
             
                      contactDetail=""
         | 
| 71 77 | 
             
                      contactType=""
         | 
| @@ -83,10 +89,11 @@ test('returns correct icon', () => { | |
| 83 89 | 
             
              expect(screen.getByTestId('test-wrong-phone').querySelector('.pb_custom_icon')).toBeInTheDocument()
         | 
| 84 90 | 
             
              expect(screen.getByTestId('test-wrong-type').querySelector('.pb_custom_icon')).toBeInTheDocument()
         | 
| 85 91 | 
             
              expect(screen.getByTestId('test-extension').querySelector('.pb_custom_icon')).toBeInTheDocument()
         | 
| 92 | 
            +
              expect(screen.getByTestId('test-international').querySelector('.pb_custom_icon')).toBeInTheDocument()
         | 
| 86 93 | 
             
              expect(screen.getByTestId('test-empty').querySelector('.pb_custom_icon')).toBeInTheDocument()
         | 
| 87 94 | 
             
            })
         | 
| 88 95 |  | 
| 89 | 
            -
            test("not compliant values return null in phone related contact types", () => {
         | 
| 96 | 
            +
            test("not compliant values return null in US phone related contact types", () => {
         | 
| 90 97 | 
             
              const notCompliantValues = [
         | 
| 91 98 | 
             
                "349-185-998223",
         | 
| 92 99 | 
             
                "349-1858",
         | 
| @@ -129,3 +136,16 @@ test("not compliant values return null in phone related contact types", () => { | |
| 129 136 | 
             
                )
         | 
| 130 137 | 
             
              })
         | 
| 131 138 | 
             
            })
         | 
| 139 | 
            +
             | 
| 140 | 
            +
            test('international contact type preserves original format', () => {
         | 
| 141 | 
            +
              render(
         | 
| 142 | 
            +
                <Contact
         | 
| 143 | 
            +
                    contactType="international"
         | 
| 144 | 
            +
                    contactValue="+44 20 7946 0958"
         | 
| 145 | 
            +
                    data={{ testid: 'test-international-format' }}
         | 
| 146 | 
            +
                />
         | 
| 147 | 
            +
              )
         | 
| 148 | 
            +
             | 
| 149 | 
            +
              const kit = screen.getByTestId('test-international-format')
         | 
| 150 | 
            +
              expect(kit).toHaveTextContent('+44 20 7946 0958')
         | 
| 151 | 
            +
            })
         | 
| @@ -13,7 +13,7 @@ | |
| 13 13 | 
             
            }) %>
         | 
| 14 14 |  | 
| 15 15 | 
             
            <%= pb_rails("contact", props: {
         | 
| 16 | 
            -
              contact_type: " | 
| 16 | 
            +
              contact_type: "work",
         | 
| 17 17 | 
             
              contact_value: "3245627482",
         | 
| 18 18 | 
             
            }) %>
         | 
| 19 19 |  | 
| @@ -21,3 +21,18 @@ | |
| 21 21 | 
             
              contact_type: "work-cell",
         | 
| 22 22 | 
             
              contact_value: "349-185-9988",
         | 
| 23 23 | 
             
            }) %>
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            <%= pb_rails("contact", props: {
         | 
| 26 | 
            +
              contact_type: "wrong-phone",
         | 
| 27 | 
            +
              contact_value: "2124396666",
         | 
| 28 | 
            +
            }) %>
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            <%= pb_rails("contact", props: {
         | 
| 31 | 
            +
              contact_type: "extension",
         | 
| 32 | 
            +
              contact_value: "1233",
         | 
| 33 | 
            +
            }) %>
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            <%= pb_rails("contact", props: {
         | 
| 36 | 
            +
              contact_type: "international",
         | 
| 37 | 
            +
              contact_value: "+44 7700 900461",
         | 
| 38 | 
            +
            }) %>
         | 
| @@ -28,6 +28,21 @@ const ContactDefault = (props) => { | |
| 28 28 | 
             
                      contactValue="3245627482"
         | 
| 29 29 | 
             
                      {...props}
         | 
| 30 30 | 
             
                  />
         | 
| 31 | 
            +
                  <Contact
         | 
| 32 | 
            +
                      contactType="wrong-phone"
         | 
| 33 | 
            +
                      contactValue="2124396666"
         | 
| 34 | 
            +
                      {...props}
         | 
| 35 | 
            +
                  />
         | 
| 36 | 
            +
                  <Contact
         | 
| 37 | 
            +
                      contactType='extension'
         | 
| 38 | 
            +
                      contactValue="1234"
         | 
| 39 | 
            +
                      {...props}
         | 
| 40 | 
            +
                  />
         | 
| 41 | 
            +
                  <Contact
         | 
| 42 | 
            +
                      contactType="international"
         | 
| 43 | 
            +
                      contactValue="+44 7700 900461"
         | 
| 44 | 
            +
                      {...props}
         | 
| 45 | 
            +
                  />
         | 
| 31 46 | 
             
                </div>
         | 
| 32 47 | 
             
              )
         | 
| 33 48 | 
             
            }
         | 
| @@ -0,0 +1,5 @@ | |
| 1 | 
            +
            The Contact kit automatically formats US phone numbers when the `contactType` / `contact_type` is one of: `home` (default), `work`, `cell`, `work-cell`, `wrong-phone`.
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            - Use `email` to display emails.
         | 
| 4 | 
            +
            - Use `international` to display International phone numbers exactly as provided (no formatting applied).
         | 
| 5 | 
            +
            - Use `extension` to display four digit phone extensions.
         | 
| @@ -138,14 +138,10 @@ const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement> | |
| 138 138 | 
             
                formattedValue = value
         | 
| 139 139 | 
             
              }
         | 
| 140 140 |  | 
| 141 | 
            -
              const errorId = error ? `${id}-error` : undefined
         | 
| 142 | 
            -
             | 
| 143 141 | 
             
              const textInput = (
         | 
| 144 142 | 
             
                childInput ? React.cloneElement(children, { className: "text_input" }) :
         | 
| 145 143 | 
             
                (<input
         | 
| 146 144 | 
             
                    {...domSafeProps(props)}
         | 
| 147 | 
            -
                    aria-describedby={errorId}
         | 
| 148 | 
            -
                    aria-invalid={!!error}
         | 
| 149 145 | 
             
                    className="text_input"
         | 
| 150 146 | 
             
                    disabled={disabled}
         | 
| 151 147 | 
             
                    id={id}
         | 
| @@ -203,20 +199,16 @@ const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement> | |
| 203 199 | 
             
                    {...htmlProps}
         | 
| 204 200 | 
             
                    className={css}
         | 
| 205 201 | 
             
                >
         | 
| 206 | 
            -
                  {label && | 
| 207 | 
            -
                    < | 
| 208 | 
            -
             | 
| 209 | 
            -
             | 
| 210 | 
            -
             | 
| 211 | 
            -
             | 
| 212 | 
            -
                  )}
         | 
| 202 | 
            +
                  {label &&
         | 
| 203 | 
            +
                    <Caption
         | 
| 204 | 
            +
                        className="pb_text_input_kit_label"
         | 
| 205 | 
            +
                        text={label}
         | 
| 206 | 
            +
                    />
         | 
| 207 | 
            +
                  }
         | 
| 213 208 | 
             
                  <div className={`${addOnCss} text_input_wrapper`}>
         | 
| 214 209 | 
             
                    {render}
         | 
| 215 210 |  | 
| 216 211 | 
             
                    {error && <Body
         | 
| 217 | 
            -
                        aria={{ atomic: "true", live: "polite" }}
         | 
| 218 | 
            -
                        htmlOptions={{ role: "alert" }}
         | 
| 219 | 
            -
                        id={errorId}
         | 
| 220 212 | 
             
                        status="negative"
         | 
| 221 213 | 
             
                        text={error}
         | 
| 222 214 | 
             
                        variant={null}
         | 
| @@ -9,27 +9,23 @@ | |
| 9 9 |  | 
| 10 10 | 
             
            <%= pb_rails("text_input", props: {
         | 
| 11 11 | 
             
              label: "Last Name",
         | 
| 12 | 
            -
              placeholder: "Enter last name" | 
| 13 | 
            -
              id: "last-name"
         | 
| 12 | 
            +
              placeholder: "Enter last name"
         | 
| 14 13 | 
             
            }) %>
         | 
| 15 14 |  | 
| 16 15 | 
             
            <%= pb_rails("text_input", props: {
         | 
| 17 16 | 
             
                label: "Phone Number",
         | 
| 18 17 | 
             
                type: "phone",
         | 
| 19 | 
            -
                placeholder: "Enter phone number" | 
| 20 | 
            -
                id: "phone"
         | 
| 18 | 
            +
                placeholder: "Enter phone number"
         | 
| 21 19 | 
             
            }) %>
         | 
| 22 20 |  | 
| 23 21 | 
             
            <%= pb_rails("text_input", props: {
         | 
| 24 22 | 
             
                label: "Email Address",
         | 
| 25 23 | 
             
                type: "email",
         | 
| 26 | 
            -
                placeholder: "Enter email address" | 
| 27 | 
            -
                id: "email"
         | 
| 24 | 
            +
                placeholder: "Enter email address"
         | 
| 28 25 | 
             
            }) %>
         | 
| 29 26 |  | 
| 30 27 | 
             
            <%= pb_rails("text_input", props: {
         | 
| 31 28 | 
             
                label: "Zip Code",
         | 
| 32 29 | 
             
                type: "number",
         | 
| 33 | 
            -
                placeholder: "Enter zip code" | 
| 34 | 
            -
                id: "zip"
         | 
| 30 | 
            +
                placeholder: "Enter zip code"
         | 
| 35 31 | 
             
            }) %>
         | 
| @@ -38,7 +38,6 @@ const TextInputDefault = (props) => { | |
| 38 38 | 
             
                      {...props}
         | 
| 39 39 | 
             
                  />
         | 
| 40 40 | 
             
                  <TextInput
         | 
| 41 | 
            -
                      id="last-name"
         | 
| 42 41 | 
             
                      label="Last Name"
         | 
| 43 42 | 
             
                      name="lastName"
         | 
| 44 43 | 
             
                      onChange={handleOnChangeFormField}
         | 
| @@ -47,7 +46,6 @@ const TextInputDefault = (props) => { | |
| 47 46 | 
             
                      {...props}
         | 
| 48 47 | 
             
                  />
         | 
| 49 48 | 
             
                  <TextInput
         | 
| 50 | 
            -
                      id="phone"
         | 
| 51 49 | 
             
                      label="Phone Number"
         | 
| 52 50 | 
             
                      name="phone"
         | 
| 53 51 | 
             
                      onChange={handleOnChangeFormField}
         | 
| @@ -57,7 +55,6 @@ const TextInputDefault = (props) => { | |
| 57 55 | 
             
                      {...props}
         | 
| 58 56 | 
             
                  />
         | 
| 59 57 | 
             
                  <TextInput
         | 
| 60 | 
            -
                      id="email"
         | 
| 61 58 | 
             
                      label="Email Address"
         | 
| 62 59 | 
             
                      name="email"
         | 
| 63 60 | 
             
                      onChange={handleOnChangeFormField}
         | 
| @@ -67,7 +64,6 @@ const TextInputDefault = (props) => { | |
| 67 64 | 
             
                      {...props}
         | 
| 68 65 | 
             
                  />
         | 
| 69 66 | 
             
                  <TextInput
         | 
| 70 | 
            -
                      id="zip"
         | 
| 71 67 | 
             
                      label="Zip Code"
         | 
| 72 68 | 
             
                      name="zip"
         | 
| 73 69 | 
             
                      onChange={handleOnChangeFormField}
         | 
| @@ -88,7 +84,6 @@ const TextInputDefault = (props) => { | |
| 88 84 | 
             
                  <br />
         | 
| 89 85 |  | 
| 90 86 | 
             
                  <TextInput
         | 
| 91 | 
            -
                      id="first-name"
         | 
| 92 87 | 
             
                      label="First Name"
         | 
| 93 88 | 
             
                      onChange={handleOnChangeFirstName}
         | 
| 94 89 | 
             
                      placeholder="Enter first name"
         | 
| @@ -1,8 +1,6 @@ | |
| 1 1 | 
             
            <%= pb_content_tag(:div, id: nil ) do  %>
         | 
| 2 2 | 
             
              <% if object.label.present? %>
         | 
| 3 | 
            -
              <label for="<%= object.input_options[:id] || object.id %>" >
         | 
| 4 3 | 
             
                <%= pb_rails("caption", props: { text: object.label, dark: object.dark, classname: "pb_text_input_kit_label" }) %>
         | 
| 5 | 
            -
              </label>
         | 
| 6 4 | 
             
              <% end %>
         | 
| 7 5 | 
             
              <%= content_tag(:div, class: "#{add_on_class} text_input_wrapper") do %>
         | 
| 8 6 | 
             
                <% if content.present? %>
         | 
| @@ -17,7 +15,7 @@ | |
| 17 15 | 
             
                <% else %>
         | 
| 18 16 | 
             
                  <%= input_tag %>
         | 
| 19 17 | 
             
                <% end %>
         | 
| 20 | 
            -
                <%= pb_rails("body", props: {dark: object.dark, status: "negative", text: object.error | 
| 18 | 
            +
                <%= pb_rails("body", props: {dark: object.dark, status: "negative", text: object.error}) if object.error %>
         | 
| 21 19 | 
             
              <% end %>
         | 
| 22 20 | 
             
            <% end %>
         | 
| 23 21 |  | 
| @@ -65,16 +65,10 @@ module Playbook | |
| 65 65 | 
             
                    "#{object.id}-sanitized" if id.present?
         | 
| 66 66 | 
             
                  end
         | 
| 67 67 |  | 
| 68 | 
            -
                  def error_id
         | 
| 69 | 
            -
                    "#{id}-error" if error.present?
         | 
| 70 | 
            -
                  end
         | 
| 71 | 
            -
             | 
| 72 68 | 
             
                private
         | 
| 73 69 |  | 
| 74 70 | 
             
                  def all_input_options
         | 
| 75 71 | 
             
                    {
         | 
| 76 | 
            -
                      'aria-describedby': error.present? ? error_id : nil,
         | 
| 77 | 
            -
                      'aria-invalid': error.present?,
         | 
| 78 72 | 
             
                      autocomplete: autocomplete ? nil : "off",
         | 
| 79 73 | 
             
                      class: "text_input #{input_options.dig(:classname) || ''}",
         | 
| 80 74 | 
             
                      data: validation_data,
         | 
| @@ -1 +1 @@ | |
| 1 | 
            -
            import{jsx,Fragment,jsxs}from"react/jsx-runtime";import{useState,useEffect}from"react";import{b as buildAriaProps,c as buildDataProps,d as buildHtmlProps,H as HighchartsReact,e as Highcharts,f as classnames,g as globalProps,h as HighchartsMore,S as SolidGauge,i as buildCss}from"./_typeahead-BKANeKyS.js";import{c as colors,h as highchartsTheme,m as merge,a as highchartsDarkTheme,t as typography}from"./lib-CY5ZPzic.js";const mapColors=array=>{const regex=/(data)\-[1-8]/;const newArray=array.map((item=>regex.test(item)?`${colors[`data_${item[item.length-1]}`]}`:item));return newArray};const BarGraph=({aria:aria={},data:data={},align:align="center",axisTitle:axisTitle,dark:dark=false,chartData:chartData,className:className="pb_bar_graph",colors:colors2,htmlOptions:htmlOptions={},customOptions:customOptions={},axisFormat:axisFormat,id:id,pointStart:pointStart,stacking:stacking,subTitle:subTitle,type:type="column",title:title="Title",xAxisCategories:xAxisCategories,yAxisMin:yAxisMin,yAxisMax:yAxisMax,legend:legend=false,toggleLegendClick:toggleLegendClick=true,height:height,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();const staticOptions={title:{text:title},chart:{height:height,type:type},subtitle:{text:subTitle},yAxis:[{labels:{format:typeof axisFormat==="string"?axisFormat:axisFormat&&axisFormat[0]?axisFormat[0].format:""},min:yAxisMin,max:yAxisMax,opposite:false,title:{text:Array.isArray(axisTitle)?axisTitle.length>0?axisTitle[0].name:null:axisTitle},plotLines:typeof yAxisMin!=="undefined"&&yAxisMin!==null?[]:[{value:0,zIndex:10,color:"#E4E8F0"}]}],xAxis:{categories:xAxisCategories},legend:{enabled:legend,align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},colors:colors2!==void 0&&colors2.length>0?mapColors(colors2):highchartsTheme.colors,plotOptions:{series:{stacking:stacking,pointStart:pointStart,borderWidth:stacking?0:"",events:{},dataLabels:{enabled:false}}},series:chartData,credits:false};if(Array.isArray(axisTitle)&&axisTitle.length>1&&axisTitle[1].name){staticOptions.yAxis.push({labels:{format:typeof axisFormat==="string"?axisFormat:axisFormat[1].format},min:yAxisMin,max:yAxisMax,opposite:true,title:{text:axisTitle[1].name},plotLines:typeof yAxisMin!=="undefined"&&yAxisMin!==null?[]:[{value:0,zIndex:10,color:"#E4E8F0"}]})}if(!toggleLegendClick){staticOptions.plotOptions.series.events={legendItemClick:()=>false}}const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(globalProps(filteredProps),className),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};const alignBlockElement=event=>{const itemToMove=document.querySelector(`#wrapper-circle-chart-${event.target.renderTo.id} .pb-circle-chart-block`);const chartContainer=document.querySelector(`#${event.target.renderTo.id}`);if(itemToMove!==null&&chartContainer!==null){itemToMove.style.height=`${event.target.chartHeight}px`;itemToMove.style.width=`${event.target.chartWidth}px`;if(chartContainer.firstChild!==null){chartContainer.firstChild.before(itemToMove)}}};const CircleChart=({align:align="center",aria:aria={},rounded:rounded=false,borderColor:borderColor=(rounded?null:""),borderWidth:borderWidth=(rounded?20:null),chartData:chartData,children:children,className:className,colors:colors2=[],customOptions:customOptions={},dark:dark=false,data:data={},dataLabelHtml:dataLabelHtml="<div>{point.name}</div>",dataLabels:dataLabels=false,height:height,htmlOptions:htmlOptions={},id:id,innerSize:innerSize="md",legend:legend=false,maxPointSize:maxPointSize=null,minPointSize:minPointSize=null,startAngle:startAngle=null,style:style="pie",title:title,tooltipHtml:tooltipHtml,useHtml:useHtml=false,zMin:zMin=null,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);HighchartsMore(Highcharts);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();Highcharts.setOptions({tooltip:{headerFormat:null,pointFormat:tooltipHtml?tooltipHtml:'<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',useHTML:useHtml}});const innerSizes={sm:"35%",md:"50%",lg:"85%",none:"0%"};const innerSizeFormat=size=>innerSizes[size];const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{const formattedChartData=chartData.map((obj=>{obj.y=obj.value;delete obj.value;return obj}));const staticOptions={title:{text:title},chart:{height:height,type:style,events:{render:event=>alignBlockElement(event),redraw:event=>alignBlockElement(event)}},legend:{align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},plotOptions:{pie:{colors:colors2.length>0?mapColors(colors2):highchartsTheme.colors,dataLabels:{enabled:dataLabels,connectorShape:"straight",connectorWidth:3,format:dataLabelHtml},showInLegend:legend}},series:[{minPointSize:minPointSize,maxPointSize:maxPointSize,innerSize:borderWidth==20?"100%":innerSizeFormat(innerSize),data:formattedChartData,zMin:zMin,startAngle:startAngle,borderWidth:borderWidth,borderColor:borderColor}],credits:false};setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(Fragment,{children:children?jsxs("div",{id:`wrapper-circle-chart-${id}`,children:[jsx(HighchartsReact,{containerProps:{className:classnames("pb_circle_chart",globalProps(filteredProps)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options}),jsx("div",{className:"pb-circle-chart-block",children:children})]}):jsx(HighchartsReact,{containerProps:{className:classnames("pb_circle_chart",globalProps(filteredProps)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})})};const Gauge=({aria:aria={},chartData:chartData,customOptions:customOptions={},dark:dark=false,data:data={},disableAnimation:disableAnimation=false,fullCircle:fullCircle=false,height:height=null,htmlOptions:htmlOptions={},id:id,max:max=100,min:min=0,prefix:prefix="",showLabels:showLabels=false,style:style="solidgauge",suffix:suffix="",title:title="",tooltipHtml:tooltipHtml='<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',colors:colors$1=[],minorTickInterval:minorTickInterval=null,circumference:circumference=(fullCircle?[0,360]:[-100,100]),...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);HighchartsMore(Highcharts);SolidGauge(Highcharts);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();Highcharts.setOptions({tooltip:{pointFormat:tooltipHtml,followPointer:true}});const css=buildCss({pb_gauge_kit:true});const[options,setOptions]=useState({});useEffect((()=>{const formattedChartData=chartData.map((obj=>{obj.y=obj.value;delete obj.value;return obj}));const staticOptions={chart:{events:{load(){setTimeout(this.reflow.bind(this),0)}},type:style,height:height},title:{text:title},yAxis:{min:min,max:max,lineWidth:0,tickWidth:0,minorTickInterval:minorTickInterval,tickAmount:2,tickPositions:[min,max],labels:{y:26,enabled:showLabels}},credits:false,series:[{data:formattedChartData}],pane:{center:["50%","50%"],size:"90%",startAngle:circumference[0],endAngle:circumference[1],background:{borderWidth:20,innerRadius:"90%",outerRadius:"90%",shape:"arc",className:"gauge-pane"}},colors:colors$1!==void 0&&colors$1.length>0?mapColors(colors$1):highchartsTheme.colors,plotOptions:{series:{animation:!disableAnimation},solidgauge:{borderColor:colors$1!==void 0&&colors$1.length===1?mapColors(colors$1).join():highchartsTheme.colors[0],borderWidth:20,radius:90,innerRadius:"90%",dataLabels:{borderWidth:0,color:colors.text_lt_default,enabled:true,format:`<span class="prefix${dark?" dark":""}">${prefix}</span><span class="fix${dark?" dark":""}">{y:,f}</span><span class="suffix${dark?" dark":""}">${suffix}</span>`,style:{fontFamily:typography.font_family_base,fontWeight:typography.regular,fontSize:typography.heading_2},y:-26}}}};setOptions(merge(staticOptions,customOptions));if(document.querySelector(".prefix")){document.querySelectorAll(".prefix").forEach((prefix2=>{prefix2.setAttribute("y","28")}));document.querySelectorAll(".fix").forEach((fix=>fix.setAttribute("y","38")))}}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(css,globalProps(props)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};const LineGraph=({aria:aria={},data:data={},align:align="center",className:className="pb_bar_graph",customOptions:customOptions={},dark:dark=false,gradient:gradient=false,type:type="line",htmlOptions:htmlOptions={},id:id,legend:legend=false,toggleLegendClick:toggleLegendClick=true,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,axisTitle:axisTitle,xAxisCategories:xAxisCategories,yAxisMin:yAxisMin,yAxisMax:yAxisMax,chartData:chartData,pointStart:pointStart,subTitle:subTitle,title:title,height:height,colors:colors2=[],...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();const staticOptions={title:{text:title},chart:{height:height,type:type},subtitle:{text:subTitle},yAxis:{min:yAxisMin,max:yAxisMax,title:{text:axisTitle}},xAxis:{categories:xAxisCategories},legend:{enabled:legend,align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},colors:colors2!==void 0&&colors2.length>0?mapColors(colors2):highchartsTheme.colors,plotOptions:{series:{pointStart:pointStart,events:{},dataLabels:{enabled:false}}},series:chartData,credits:false};if(!toggleLegendClick){staticOptions.plotOptions.series.events={legendItemClick:()=>false}}const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(globalProps(filteredProps),className),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};export{BarGraph as B,CircleChart as C,Gauge as G,LineGraph as L};
         | 
| 1 | 
            +
            import{jsx,Fragment,jsxs}from"react/jsx-runtime";import{useState,useEffect}from"react";import{b as buildAriaProps,c as buildDataProps,d as buildHtmlProps,H as HighchartsReact,e as Highcharts,f as classnames,g as globalProps,h as HighchartsMore,S as SolidGauge,i as buildCss}from"./_typeahead-J1_avqdO.js";import{c as colors,h as highchartsTheme,m as merge,a as highchartsDarkTheme,t as typography}from"./lib-CY5ZPzic.js";const mapColors=array=>{const regex=/(data)\-[1-8]/;const newArray=array.map((item=>regex.test(item)?`${colors[`data_${item[item.length-1]}`]}`:item));return newArray};const BarGraph=({aria:aria={},data:data={},align:align="center",axisTitle:axisTitle,dark:dark=false,chartData:chartData,className:className="pb_bar_graph",colors:colors2,htmlOptions:htmlOptions={},customOptions:customOptions={},axisFormat:axisFormat,id:id,pointStart:pointStart,stacking:stacking,subTitle:subTitle,type:type="column",title:title="Title",xAxisCategories:xAxisCategories,yAxisMin:yAxisMin,yAxisMax:yAxisMax,legend:legend=false,toggleLegendClick:toggleLegendClick=true,height:height,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();const staticOptions={title:{text:title},chart:{height:height,type:type},subtitle:{text:subTitle},yAxis:[{labels:{format:typeof axisFormat==="string"?axisFormat:axisFormat&&axisFormat[0]?axisFormat[0].format:""},min:yAxisMin,max:yAxisMax,opposite:false,title:{text:Array.isArray(axisTitle)?axisTitle.length>0?axisTitle[0].name:null:axisTitle},plotLines:typeof yAxisMin!=="undefined"&&yAxisMin!==null?[]:[{value:0,zIndex:10,color:"#E4E8F0"}]}],xAxis:{categories:xAxisCategories},legend:{enabled:legend,align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},colors:colors2!==void 0&&colors2.length>0?mapColors(colors2):highchartsTheme.colors,plotOptions:{series:{stacking:stacking,pointStart:pointStart,borderWidth:stacking?0:"",events:{},dataLabels:{enabled:false}}},series:chartData,credits:false};if(Array.isArray(axisTitle)&&axisTitle.length>1&&axisTitle[1].name){staticOptions.yAxis.push({labels:{format:typeof axisFormat==="string"?axisFormat:axisFormat[1].format},min:yAxisMin,max:yAxisMax,opposite:true,title:{text:axisTitle[1].name},plotLines:typeof yAxisMin!=="undefined"&&yAxisMin!==null?[]:[{value:0,zIndex:10,color:"#E4E8F0"}]})}if(!toggleLegendClick){staticOptions.plotOptions.series.events={legendItemClick:()=>false}}const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(globalProps(filteredProps),className),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};const alignBlockElement=event=>{const itemToMove=document.querySelector(`#wrapper-circle-chart-${event.target.renderTo.id} .pb-circle-chart-block`);const chartContainer=document.querySelector(`#${event.target.renderTo.id}`);if(itemToMove!==null&&chartContainer!==null){itemToMove.style.height=`${event.target.chartHeight}px`;itemToMove.style.width=`${event.target.chartWidth}px`;if(chartContainer.firstChild!==null){chartContainer.firstChild.before(itemToMove)}}};const CircleChart=({align:align="center",aria:aria={},rounded:rounded=false,borderColor:borderColor=(rounded?null:""),borderWidth:borderWidth=(rounded?20:null),chartData:chartData,children:children,className:className,colors:colors2=[],customOptions:customOptions={},dark:dark=false,data:data={},dataLabelHtml:dataLabelHtml="<div>{point.name}</div>",dataLabels:dataLabels=false,height:height,htmlOptions:htmlOptions={},id:id,innerSize:innerSize="md",legend:legend=false,maxPointSize:maxPointSize=null,minPointSize:minPointSize=null,startAngle:startAngle=null,style:style="pie",title:title,tooltipHtml:tooltipHtml,useHtml:useHtml=false,zMin:zMin=null,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);HighchartsMore(Highcharts);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();Highcharts.setOptions({tooltip:{headerFormat:null,pointFormat:tooltipHtml?tooltipHtml:'<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',useHTML:useHtml}});const innerSizes={sm:"35%",md:"50%",lg:"85%",none:"0%"};const innerSizeFormat=size=>innerSizes[size];const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{const formattedChartData=chartData.map((obj=>{obj.y=obj.value;delete obj.value;return obj}));const staticOptions={title:{text:title},chart:{height:height,type:style,events:{render:event=>alignBlockElement(event),redraw:event=>alignBlockElement(event)}},legend:{align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},plotOptions:{pie:{colors:colors2.length>0?mapColors(colors2):highchartsTheme.colors,dataLabels:{enabled:dataLabels,connectorShape:"straight",connectorWidth:3,format:dataLabelHtml},showInLegend:legend}},series:[{minPointSize:minPointSize,maxPointSize:maxPointSize,innerSize:borderWidth==20?"100%":innerSizeFormat(innerSize),data:formattedChartData,zMin:zMin,startAngle:startAngle,borderWidth:borderWidth,borderColor:borderColor}],credits:false};setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(Fragment,{children:children?jsxs("div",{id:`wrapper-circle-chart-${id}`,children:[jsx(HighchartsReact,{containerProps:{className:classnames("pb_circle_chart",globalProps(filteredProps)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options}),jsx("div",{className:"pb-circle-chart-block",children:children})]}):jsx(HighchartsReact,{containerProps:{className:classnames("pb_circle_chart",globalProps(filteredProps)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})})};const Gauge=({aria:aria={},chartData:chartData,customOptions:customOptions={},dark:dark=false,data:data={},disableAnimation:disableAnimation=false,fullCircle:fullCircle=false,height:height=null,htmlOptions:htmlOptions={},id:id,max:max=100,min:min=0,prefix:prefix="",showLabels:showLabels=false,style:style="solidgauge",suffix:suffix="",title:title="",tooltipHtml:tooltipHtml='<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',colors:colors$1=[],minorTickInterval:minorTickInterval=null,circumference:circumference=(fullCircle?[0,360]:[-100,100]),...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);HighchartsMore(Highcharts);SolidGauge(Highcharts);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();Highcharts.setOptions({tooltip:{pointFormat:tooltipHtml,followPointer:true}});const css=buildCss({pb_gauge_kit:true});const[options,setOptions]=useState({});useEffect((()=>{const formattedChartData=chartData.map((obj=>{obj.y=obj.value;delete obj.value;return obj}));const staticOptions={chart:{events:{load(){setTimeout(this.reflow.bind(this),0)}},type:style,height:height},title:{text:title},yAxis:{min:min,max:max,lineWidth:0,tickWidth:0,minorTickInterval:minorTickInterval,tickAmount:2,tickPositions:[min,max],labels:{y:26,enabled:showLabels}},credits:false,series:[{data:formattedChartData}],pane:{center:["50%","50%"],size:"90%",startAngle:circumference[0],endAngle:circumference[1],background:{borderWidth:20,innerRadius:"90%",outerRadius:"90%",shape:"arc",className:"gauge-pane"}},colors:colors$1!==void 0&&colors$1.length>0?mapColors(colors$1):highchartsTheme.colors,plotOptions:{series:{animation:!disableAnimation},solidgauge:{borderColor:colors$1!==void 0&&colors$1.length===1?mapColors(colors$1).join():highchartsTheme.colors[0],borderWidth:20,radius:90,innerRadius:"90%",dataLabels:{borderWidth:0,color:colors.text_lt_default,enabled:true,format:`<span class="prefix${dark?" dark":""}">${prefix}</span><span class="fix${dark?" dark":""}">{y:,f}</span><span class="suffix${dark?" dark":""}">${suffix}</span>`,style:{fontFamily:typography.font_family_base,fontWeight:typography.regular,fontSize:typography.heading_2},y:-26}}}};setOptions(merge(staticOptions,customOptions));if(document.querySelector(".prefix")){document.querySelectorAll(".prefix").forEach((prefix2=>{prefix2.setAttribute("y","28")}));document.querySelectorAll(".fix").forEach((fix=>fix.setAttribute("y","38")))}}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(css,globalProps(props)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};const LineGraph=({aria:aria={},data:data={},align:align="center",className:className="pb_bar_graph",customOptions:customOptions={},dark:dark=false,gradient:gradient=false,type:type="line",htmlOptions:htmlOptions={},id:id,legend:legend=false,toggleLegendClick:toggleLegendClick=true,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,axisTitle:axisTitle,xAxisCategories:xAxisCategories,yAxisMin:yAxisMin,yAxisMax:yAxisMax,chartData:chartData,pointStart:pointStart,subTitle:subTitle,title:title,height:height,colors:colors2=[],...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();const staticOptions={title:{text:title},chart:{height:height,type:type},subtitle:{text:subTitle},yAxis:{min:yAxisMin,max:yAxisMax,title:{text:axisTitle}},xAxis:{categories:xAxisCategories},legend:{enabled:legend,align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},colors:colors2!==void 0&&colors2.length>0?mapColors(colors2):highchartsTheme.colors,plotOptions:{series:{pointStart:pointStart,events:{},dataLabels:{enabled:false}}},series:chartData,credits:false};if(!toggleLegendClick){staticOptions.plotOptions.series.events={legendItemClick:()=>false}}const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(globalProps(filteredProps),className),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};export{BarGraph as B,CircleChart as C,Gauge as G,LineGraph as L};
         |