Merge branch 'develop' of https://gitlab.verizon.com/BPHV_MIPS/vds_ios into vasavk/carousel
# Conflicts: # VDS.xcodeproj/project.pbxproj
@ -8,16 +8,12 @@
|
|||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
1808BEBC2BA41C3200129230 /* CarouselScrollbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1808BEBB2BA41C3200129230 /* CarouselScrollbar.swift */; };
|
1808BEBC2BA41C3200129230 /* CarouselScrollbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1808BEBB2BA41C3200129230 /* CarouselScrollbar.swift */; };
|
||||||
1808BEC02BA456B700129230 /* CarouselScrollbarChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 1808BEBF2BA456B700129230 /* CarouselScrollbarChangeLog.txt */; };
|
|
||||||
1832AC572BA0791D008AE476 /* BreadcrumbCellItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1832AC562BA0791D008AE476 /* BreadcrumbCellItem.swift */; };
|
1832AC572BA0791D008AE476 /* BreadcrumbCellItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1832AC562BA0791D008AE476 /* BreadcrumbCellItem.swift */; };
|
||||||
1842B1DF2BECE28B0021AFCA /* CalendarDateViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1842B1DE2BECE28B0021AFCA /* CalendarDateViewCell.swift */; };
|
1842B1DF2BECE28B0021AFCA /* CalendarDateViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1842B1DE2BECE28B0021AFCA /* CalendarDateViewCell.swift */; };
|
||||||
1842B1E12BECE7B70021AFCA /* CalendarHeaderReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1842B1E02BECE7B70021AFCA /* CalendarHeaderReusableView.swift */; };
|
1842B1E12BECE7B70021AFCA /* CalendarHeaderReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1842B1E02BECE7B70021AFCA /* CalendarHeaderReusableView.swift */; };
|
||||||
1842B1E32BECF0A20021AFCA /* CalendarFooterReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1842B1E22BECF0A10021AFCA /* CalendarFooterReusableView.swift */; };
|
1842B1E32BECF0A20021AFCA /* CalendarFooterReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1842B1E22BECF0A10021AFCA /* CalendarFooterReusableView.swift */; };
|
||||||
18450CF12BA1B19C009FDF2A /* BreadcrumbsChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 18450CF02BA1B19C009FDF2A /* BreadcrumbsChangeLog.txt */; };
|
|
||||||
1855EC662BAABF2A002ACAC2 /* BreadcrumbItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1855EC652BAABF2A002ACAC2 /* BreadcrumbItemModel.swift */; };
|
1855EC662BAABF2A002ACAC2 /* BreadcrumbItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1855EC652BAABF2A002ACAC2 /* BreadcrumbItemModel.swift */; };
|
||||||
186B2A8A2B88DA7F001AB71F /* TextAreaChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 186B2A892B88DA7F001AB71F /* TextAreaChangeLog.txt */; };
|
|
||||||
186D13CB2BBA8B1500986B53 /* DropdownSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 186D13CA2BBA8B1500986B53 /* DropdownSelect.swift */; };
|
186D13CB2BBA8B1500986B53 /* DropdownSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 186D13CA2BBA8B1500986B53 /* DropdownSelect.swift */; };
|
||||||
186D13CF2BBC36EF00986B53 /* DropdownSelectChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 186D13CE2BBC36EE00986B53 /* DropdownSelectChangeLog.txt */; };
|
|
||||||
18792A902B7431F2008C0D29 /* ButtonIconBadgeIndicatorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18792A8F2B7431F2008C0D29 /* ButtonIconBadgeIndicatorModel.swift */; };
|
18792A902B7431F2008C0D29 /* ButtonIconBadgeIndicatorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18792A8F2B7431F2008C0D29 /* ButtonIconBadgeIndicatorModel.swift */; };
|
||||||
18A3F12A2BD9298900498E4A /* Calendar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A3F1292BD9298900498E4A /* Calendar.swift */; };
|
18A3F12A2BD9298900498E4A /* Calendar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A3F1292BD9298900498E4A /* Calendar.swift */; };
|
||||||
18A65A022B96E848006602CC /* Breadcrumbs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A65A012B96E848006602CC /* Breadcrumbs.swift */; };
|
18A65A022B96E848006602CC /* Breadcrumbs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A65A012B96E848006602CC /* Breadcrumbs.swift */; };
|
||||||
@ -30,20 +26,18 @@
|
|||||||
18BDEE822B75316E00452358 /* ButtonIconChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 18BDEE812B75316E00452358 /* ButtonIconChangeLog.txt */; };
|
18BDEE822B75316E00452358 /* ButtonIconChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 18BDEE812B75316E00452358 /* ButtonIconChangeLog.txt */; };
|
||||||
18FEA1AD2BDD137500A56439 /* CalendarIndicatorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18FEA1AC2BDD137500A56439 /* CalendarIndicatorModel.swift */; };
|
18FEA1AD2BDD137500A56439 /* CalendarIndicatorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18FEA1AC2BDD137500A56439 /* CalendarIndicatorModel.swift */; };
|
||||||
18FEA1B52BE0E63600A56439 /* Date+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18FEA1B42BE0E63600A56439 /* Date+Extension.swift */; };
|
18FEA1B52BE0E63600A56439 /* Date+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18FEA1B42BE0E63600A56439 /* Date+Extension.swift */; };
|
||||||
18FEA1B92BE1301700A56439 /* CalendarChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 18FEA1B82BE1301700A56439 /* CalendarChangeLog.txt */; };
|
|
||||||
445BA07829C07B3D0036A7C5 /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 445BA07729C07B3D0036A7C5 /* Notification.swift */; };
|
445BA07829C07B3D0036A7C5 /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 445BA07729C07B3D0036A7C5 /* Notification.swift */; };
|
||||||
44604AD429CE186A00E62B51 /* NotificationButtonModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44604AD329CE186A00E62B51 /* NotificationButtonModel.swift */; };
|
44604AD429CE186A00E62B51 /* NotificationButtonModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44604AD329CE186A00E62B51 /* NotificationButtonModel.swift */; };
|
||||||
44604AD729CE196600E62B51 /* Line.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44604AD629CE196600E62B51 /* Line.swift */; };
|
44604AD729CE196600E62B51 /* Line.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44604AD629CE196600E62B51 /* Line.swift */; };
|
||||||
|
44A952D92BE384C40009F874 /* TableItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44A952D82BE384C40009F874 /* TableItemModel.swift */; };
|
||||||
|
44A952DD2BE3DA820009F874 /* TableFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44A952DC2BE3DA820009F874 /* TableFlowLayout.swift */; };
|
||||||
|
44BD43B62C04866600644F87 /* TableRowModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44BD43B52C04866600644F87 /* TableRowModel.swift */; };
|
||||||
5F21D7BF28DCEB3D003E7CD6 /* Useable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F21D7BE28DCEB3D003E7CD6 /* Useable.swift */; };
|
5F21D7BF28DCEB3D003E7CD6 /* Useable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F21D7BE28DCEB3D003E7CD6 /* Useable.swift */; };
|
||||||
5FC35BE328D51405004EBEAC /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC35BE228D51405004EBEAC /* Button.swift */; };
|
5FC35BE328D51405004EBEAC /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC35BE228D51405004EBEAC /* Button.swift */; };
|
||||||
710607952B91A99500F2863F /* TitleletChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 710607942B91A99500F2863F /* TitleletChangeLog.txt */; };
|
|
||||||
7115BD3C2B84C0C200E0A610 /* TileContainerChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 7115BD3B2B84C0C200E0A610 /* TileContainerChangeLog.txt */; };
|
|
||||||
71ACE89C2BA0451200FB6ADC /* PaginationContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71ACE89B2BA0451200FB6ADC /* PaginationContainer.swift */; };
|
71ACE89C2BA0451200FB6ADC /* PaginationContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71ACE89B2BA0451200FB6ADC /* PaginationContainer.swift */; };
|
||||||
71ACE89E2BA1CC1700FB6ADC /* TiletEyebrowModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71ACE89D2BA1CC1700FB6ADC /* TiletEyebrowModel.swift */; };
|
71ACE89E2BA1CC1700FB6ADC /* TiletEyebrowModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71ACE89D2BA1CC1700FB6ADC /* TiletEyebrowModel.swift */; };
|
||||||
71B23C2D2B91FA690027F7D9 /* Pagination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71B23C2C2B91FA690027F7D9 /* Pagination.swift */; };
|
71B23C2D2B91FA690027F7D9 /* Pagination.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71B23C2C2B91FA690027F7D9 /* Pagination.swift */; };
|
||||||
71B5FCBB2B95A0CA00269BCC /* PaginationChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 71B5FCBA2B95A0CA00269BCC /* PaginationChangeLog.txt */; };
|
|
||||||
71BFA70A2B7F70E6000DCE33 /* DropShadowable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71BFA7092B7F70E6000DCE33 /* DropShadowable.swift */; };
|
71BFA70A2B7F70E6000DCE33 /* DropShadowable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71BFA7092B7F70E6000DCE33 /* DropShadowable.swift */; };
|
||||||
71C02B382B7BD98F00E93E66 /* NotificationChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 71C02B372B7BD98F00E93E66 /* NotificationChangeLog.txt */; };
|
|
||||||
71FC86DA2B96F44C00700965 /* PaginationButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71FC86D92B96F44C00700965 /* PaginationButton.swift */; };
|
71FC86DA2B96F44C00700965 /* PaginationButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71FC86D92B96F44C00700965 /* PaginationButton.swift */; };
|
||||||
71FC86DC2B96F4C800700965 /* PaginationCellItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71FC86DB2B96F4C800700965 /* PaginationCellItem.swift */; };
|
71FC86DC2B96F4C800700965 /* PaginationCellItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71FC86DB2B96F4C800700965 /* PaginationCellItem.swift */; };
|
||||||
71FC86DE2B9738B900700965 /* SurfaceConfigurationValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71FC86DD2B9738B900700965 /* SurfaceConfigurationValue.swift */; };
|
71FC86DE2B9738B900700965 /* SurfaceConfigurationValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71FC86DD2B9738B900700965 /* SurfaceConfigurationValue.swift */; };
|
||||||
@ -102,7 +96,6 @@
|
|||||||
EA5E3058295105A40082B959 /* Tilelet.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E3057295105A40082B959 /* Tilelet.swift */; };
|
EA5E3058295105A40082B959 /* Tilelet.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E3057295105A40082B959 /* Tilelet.swift */; };
|
||||||
EA5E305A29510F8B0082B959 /* EnumSubset.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E305929510F8B0082B959 /* EnumSubset.swift */; };
|
EA5E305A29510F8B0082B959 /* EnumSubset.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5E305929510F8B0082B959 /* EnumSubset.swift */; };
|
||||||
EA5F86C82A1BD99100BC83E4 /* TabModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5F86C72A1BD99100BC83E4 /* TabModel.swift */; };
|
EA5F86C82A1BD99100BC83E4 /* TabModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5F86C72A1BD99100BC83E4 /* TabModel.swift */; };
|
||||||
EA5F86CC2A1D28B500BC83E4 /* ReleaseNotes.txt in Resources */ = {isa = PBXBuildFile; fileRef = EA5F86CB2A1D28B500BC83E4 /* ReleaseNotes.txt */; };
|
|
||||||
EA5F86D02A1F936100BC83E4 /* TabsContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5F86CF2A1F936100BC83E4 /* TabsContainer.swift */; };
|
EA5F86D02A1F936100BC83E4 /* TabsContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5F86CF2A1F936100BC83E4 /* TabsContainer.swift */; };
|
||||||
EA6642952BCEBF9500D81DC4 /* TextLinkModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6642942BCEBF9500D81DC4 /* TextLinkModel.swift */; };
|
EA6642952BCEBF9500D81DC4 /* TextLinkModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6642942BCEBF9500D81DC4 /* TextLinkModel.swift */; };
|
||||||
EA6F330E2B911E9000BACAB9 /* TextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6F330D2B911E9000BACAB9 /* TextView.swift */; };
|
EA6F330E2B911E9000BACAB9 /* TextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6F330D2B911E9000BACAB9 /* TextView.swift */; };
|
||||||
@ -163,7 +156,6 @@
|
|||||||
EAC58C162BED0E0300BA39FA /* InlineAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC58C152BED0E0300BA39FA /* InlineAction.swift */; };
|
EAC58C162BED0E0300BA39FA /* InlineAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC58C152BED0E0300BA39FA /* InlineAction.swift */; };
|
||||||
EAC58C182BED0E2300BA39FA /* SecurityCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC58C172BED0E2300BA39FA /* SecurityCode.swift */; };
|
EAC58C182BED0E2300BA39FA /* SecurityCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC58C172BED0E2300BA39FA /* SecurityCode.swift */; };
|
||||||
EAC58C232BF2824200BA39FA /* DatePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC58C222BF2824200BA39FA /* DatePicker.swift */; };
|
EAC58C232BF2824200BA39FA /* DatePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC58C222BF2824200BA39FA /* DatePicker.swift */; };
|
||||||
EAC58C252BF2A7FB00BA39FA /* DatePickerChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAC58C242BF2A7FB00BA39FA /* DatePickerChangeLog.txt */; };
|
|
||||||
EAC58C272BF4116200BA39FA /* DatePickerCalendarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC58C262BF4116200BA39FA /* DatePickerCalendarModel.swift */; };
|
EAC58C272BF4116200BA39FA /* DatePickerCalendarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC58C262BF4116200BA39FA /* DatePickerCalendarModel.swift */; };
|
||||||
EAC58C292BF4118C00BA39FA /* DatePickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC58C282BF4118C00BA39FA /* DatePickerViewController.swift */; };
|
EAC58C292BF4118C00BA39FA /* DatePickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC58C282BF4118C00BA39FA /* DatePickerViewController.swift */; };
|
||||||
EAC71A1D2A2E155A00E47A9F /* Checkbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC71A1C2A2E155A00E47A9F /* Checkbox.swift */; };
|
EAC71A1D2A2E155A00E47A9F /* Checkbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC71A1C2A2E155A00E47A9F /* Checkbox.swift */; };
|
||||||
@ -181,20 +173,8 @@
|
|||||||
EAD068942A560C13002E3A2D /* LoaderLaunchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD068932A560C13002E3A2D /* LoaderLaunchable.swift */; };
|
EAD068942A560C13002E3A2D /* LoaderLaunchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD068932A560C13002E3A2D /* LoaderLaunchable.swift */; };
|
||||||
EAD8D2C128BFDE8B006EB6A6 /* UIGestureRecognizer+Publisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD8D2C028BFDE8B006EB6A6 /* UIGestureRecognizer+Publisher.swift */; };
|
EAD8D2C128BFDE8B006EB6A6 /* UIGestureRecognizer+Publisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAD8D2C028BFDE8B006EB6A6 /* UIGestureRecognizer+Publisher.swift */; };
|
||||||
EAE785312BA0A438009428EA /* UIImage+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAE785302BA0A438009428EA /* UIImage+Helper.swift */; };
|
EAE785312BA0A438009428EA /* UIImage+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAE785302BA0A438009428EA /* UIImage+Helper.swift */; };
|
||||||
EAEEEC922B1F807300531FC2 /* BadgeChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEEC912B1F807300531FC2 /* BadgeChangeLog.txt */; };
|
EAF193422C134F3400C68D18 /* Table.swift in Sources */ = {isa = PBXBuildFile; fileRef = 440B84C92BD8E0E9004A732A /* Table.swift */; };
|
||||||
EAEEEC962B1F893B00531FC2 /* ButtonChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEEC952B1F893B00531FC2 /* ButtonChangeLog.txt */; };
|
EAF193432C134F3800C68D18 /* TableCellItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 443DBAF92BDA303F0021497E /* TableCellItem.swift */; };
|
||||||
EAEEEC982B1F8DD100531FC2 /* LineChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEEC972B1F8DD100531FC2 /* LineChangeLog.txt */; };
|
|
||||||
EAEEEC9A2B1F8E4400531FC2 /* TextLinkChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEEC992B1F8E4400531FC2 /* TextLinkChangeLog.txt */; };
|
|
||||||
EAEEEC9C2B1F8F0700531FC2 /* TextLinkCaretChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEEC9B2B1F8F0700531FC2 /* TextLinkCaretChangeLog.txt */; };
|
|
||||||
EAEEEC9E2B1F8F7700531FC2 /* ButtonGroupChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEEC9D2B1F8F7700531FC2 /* ButtonGroupChangeLog.txt */; };
|
|
||||||
EAEEECA02B1F908200531FC2 /* BadgeIndicatorChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEEC9F2B1F908200531FC2 /* BadgeIndicatorChangeLog.txt */; };
|
|
||||||
EAEEECA22B1F92AD00531FC2 /* LabelChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEECA12B1F92AD00531FC2 /* LabelChangeLog.txt */; };
|
|
||||||
EAEEECA42B1F934600531FC2 /* IconChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEECA32B1F934600531FC2 /* IconChangeLog.txt */; };
|
|
||||||
EAEEECA72B1F952000531FC2 /* TabsChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEECA62B1F952000531FC2 /* TabsChangeLog.txt */; };
|
|
||||||
EAEEECA92B1F969700531FC2 /* TooltipChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEECA82B1F969700531FC2 /* TooltipChangeLog.txt */; };
|
|
||||||
EAEEECAB2B1FBF2A00531FC2 /* ToggleChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEECAA2B1FBF2900531FC2 /* ToggleChangeLog.txt */; };
|
|
||||||
EAEEECAD2B1FC1A600531FC2 /* TitleLockupChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEECAC2B1FC1A600531FC2 /* TitleLockupChangeLog.txt */; };
|
|
||||||
EAEEECAF2B1FC2BA00531FC2 /* ToggleViewChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = EAEEECAE2B1FC2BA00531FC2 /* ToggleViewChangeLog.txt */; };
|
|
||||||
EAF1FE9929D4850E00101452 /* Clickable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF1FE9829D4850E00101452 /* Clickable.swift */; };
|
EAF1FE9929D4850E00101452 /* Clickable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF1FE9829D4850E00101452 /* Clickable.swift */; };
|
||||||
EAF1FE9B29DB1A6000101452 /* Changeable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF1FE9A29DB1A6000101452 /* Changeable.swift */; };
|
EAF1FE9B29DB1A6000101452 /* Changeable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF1FE9A29DB1A6000101452 /* Changeable.swift */; };
|
||||||
EAF7F0952899861000B287F5 /* CheckboxItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0932899861000B287F5 /* CheckboxItem.swift */; };
|
EAF7F0952899861000B287F5 /* CheckboxItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0932899861000B287F5 /* CheckboxItem.swift */; };
|
||||||
@ -250,9 +230,15 @@
|
|||||||
18FEA1AC2BDD137500A56439 /* CalendarIndicatorModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarIndicatorModel.swift; sourceTree = "<group>"; };
|
18FEA1AC2BDD137500A56439 /* CalendarIndicatorModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarIndicatorModel.swift; sourceTree = "<group>"; };
|
||||||
18FEA1B42BE0E63600A56439 /* Date+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+Extension.swift"; sourceTree = "<group>"; };
|
18FEA1B42BE0E63600A56439 /* Date+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+Extension.swift"; sourceTree = "<group>"; };
|
||||||
18FEA1B82BE1301700A56439 /* CalendarChangeLog.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CalendarChangeLog.txt; sourceTree = "<group>"; };
|
18FEA1B82BE1301700A56439 /* CalendarChangeLog.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CalendarChangeLog.txt; sourceTree = "<group>"; };
|
||||||
|
440B84C92BD8E0E9004A732A /* Table.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Table.swift; sourceTree = "<group>"; };
|
||||||
|
443DBAF92BDA303F0021497E /* TableCellItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableCellItem.swift; sourceTree = "<group>"; };
|
||||||
445BA07729C07B3D0036A7C5 /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = "<group>"; };
|
445BA07729C07B3D0036A7C5 /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = "<group>"; };
|
||||||
44604AD329CE186A00E62B51 /* NotificationButtonModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationButtonModel.swift; sourceTree = "<group>"; };
|
44604AD329CE186A00E62B51 /* NotificationButtonModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationButtonModel.swift; sourceTree = "<group>"; };
|
||||||
44604AD629CE196600E62B51 /* Line.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Line.swift; sourceTree = "<group>"; };
|
44604AD629CE196600E62B51 /* Line.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Line.swift; sourceTree = "<group>"; };
|
||||||
|
44A952D82BE384C40009F874 /* TableItemModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableItemModel.swift; sourceTree = "<group>"; };
|
||||||
|
44A952DC2BE3DA820009F874 /* TableFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableFlowLayout.swift; sourceTree = "<group>"; };
|
||||||
|
44BD43B52C04866600644F87 /* TableRowModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableRowModel.swift; sourceTree = "<group>"; };
|
||||||
|
44CCF4942C0493A1005C9C5E /* TableChangeLog.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TableChangeLog.txt; sourceTree = "<group>"; };
|
||||||
5F21D7BE28DCEB3D003E7CD6 /* Useable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Useable.swift; sourceTree = "<group>"; };
|
5F21D7BE28DCEB3D003E7CD6 /* Useable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Useable.swift; sourceTree = "<group>"; };
|
||||||
5FC35BE228D51405004EBEAC /* Button.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Button.swift; sourceTree = "<group>"; };
|
5FC35BE228D51405004EBEAC /* Button.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Button.swift; sourceTree = "<group>"; };
|
||||||
710607942B91A99500F2863F /* TitleletChangeLog.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = TitleletChangeLog.txt; sourceTree = "<group>"; };
|
710607942B91A99500F2863F /* TitleletChangeLog.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = TitleletChangeLog.txt; sourceTree = "<group>"; };
|
||||||
@ -327,6 +313,8 @@
|
|||||||
EA6642942BCEBF9500D81DC4 /* TextLinkModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextLinkModel.swift; sourceTree = "<group>"; };
|
EA6642942BCEBF9500D81DC4 /* TextLinkModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextLinkModel.swift; sourceTree = "<group>"; };
|
||||||
EA6F330D2B911E9000BACAB9 /* TextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextView.swift; sourceTree = "<group>"; };
|
EA6F330D2B911E9000BACAB9 /* TextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextView.swift; sourceTree = "<group>"; };
|
||||||
EA78C7952C00CAC200430AD1 /* Groupable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Groupable.swift; sourceTree = "<group>"; };
|
EA78C7952C00CAC200430AD1 /* Groupable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Groupable.swift; sourceTree = "<group>"; };
|
||||||
|
EA78C7A12C0E63D200430AD1 /* vds-dev.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "vds-dev.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
EA78C7A22C0E63DD00430AD1 /* vds.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = vds.xcconfig; sourceTree = "<group>"; };
|
||||||
EA81410A2A0E8E3C004F60D2 /* ButtonIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonIcon.swift; sourceTree = "<group>"; };
|
EA81410A2A0E8E3C004F60D2 /* ButtonIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonIcon.swift; sourceTree = "<group>"; };
|
||||||
EA81410F2A127066004F60D2 /* UIColor+VDSColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+VDSColor.swift"; sourceTree = "<group>"; };
|
EA81410F2A127066004F60D2 /* UIColor+VDSColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+VDSColor.swift"; sourceTree = "<group>"; };
|
||||||
EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+Publisher.swift"; sourceTree = "<group>"; };
|
EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+Publisher.swift"; sourceTree = "<group>"; };
|
||||||
@ -512,6 +500,19 @@
|
|||||||
path = Carousel;
|
path = Carousel;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
440B84C82BD8E0CE004A732A /* Table */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
440B84C92BD8E0E9004A732A /* Table.swift */,
|
||||||
|
443DBAF92BDA303F0021497E /* TableCellItem.swift */,
|
||||||
|
44A952DC2BE3DA820009F874 /* TableFlowLayout.swift */,
|
||||||
|
44BD43B52C04866600644F87 /* TableRowModel.swift */,
|
||||||
|
44A952D82BE384C40009F874 /* TableItemModel.swift */,
|
||||||
|
44CCF4942C0493A1005C9C5E /* TableChangeLog.txt */,
|
||||||
|
);
|
||||||
|
path = Table;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
445BA07629C07ABA0036A7C5 /* Notification */ = {
|
445BA07629C07ABA0036A7C5 /* Notification */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -681,6 +682,7 @@
|
|||||||
71B23C2B2B91FA510027F7D9 /* Pagination */,
|
71B23C2B2B91FA510027F7D9 /* Pagination */,
|
||||||
EA89200B28B530F0006B9984 /* RadioBox */,
|
EA89200B28B530F0006B9984 /* RadioBox */,
|
||||||
EAF7F11428A1470D00B287F5 /* RadioButton */,
|
EAF7F11428A1470D00B287F5 /* RadioButton */,
|
||||||
|
440B84C82BD8E0CE004A732A /* Table */,
|
||||||
EA596ABB2A16B4D500300C4B /* Tabs */,
|
EA596ABB2A16B4D500300C4B /* Tabs */,
|
||||||
EAC925852911C9DE00091998 /* TextFields */,
|
EAC925852911C9DE00091998 /* TextFields */,
|
||||||
EA5E304A294CBDBB0082B959 /* TileContainer */,
|
EA5E304A294CBDBB0082B959 /* TileContainer */,
|
||||||
@ -790,6 +792,8 @@
|
|||||||
EA3361FF2891E14C0071C351 /* Fonts */,
|
EA3361FF2891E14C0071C351 /* Fonts */,
|
||||||
EAA5EEB828ECD24B003B3210 /* Icons.xcassets */,
|
EAA5EEB828ECD24B003B3210 /* Icons.xcassets */,
|
||||||
EA5F86CB2A1D28B500BC83E4 /* ReleaseNotes.txt */,
|
EA5F86CB2A1D28B500BC83E4 /* ReleaseNotes.txt */,
|
||||||
|
EA78C7A12C0E63D200430AD1 /* vds-dev.xcconfig */,
|
||||||
|
EA78C7A22C0E63DD00430AD1 /* vds.xcconfig */,
|
||||||
);
|
);
|
||||||
path = SupportingFiles;
|
path = SupportingFiles;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -1100,6 +1104,7 @@
|
|||||||
EA336168288B19200071C351 /* Sources */,
|
EA336168288B19200071C351 /* Sources */,
|
||||||
EA336169288B19200071C351 /* Frameworks */,
|
EA336169288B19200071C351 /* Frameworks */,
|
||||||
EA33616A288B19200071C351 /* Resources */,
|
EA33616A288B19200071C351 /* Resources */,
|
||||||
|
EA78C79E2C0E4FFB00430AD1 /* Add ChangeLog.txt Files */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -1170,39 +1175,12 @@
|
|||||||
isa = PBXResourcesBuildPhase;
|
isa = PBXResourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
EAEEECA42B1F934600531FC2 /* IconChangeLog.txt in Resources */,
|
|
||||||
7115BD3C2B84C0C200E0A610 /* TileContainerChangeLog.txt in Resources */,
|
|
||||||
EA3362042891E14D0071C351 /* VerizonNHGeTX-Bold.otf in Resources */,
|
EA3362042891E14D0071C351 /* VerizonNHGeTX-Bold.otf in Resources */,
|
||||||
71C02B382B7BD98F00E93E66 /* NotificationChangeLog.txt in Resources */,
|
|
||||||
EAEEECA72B1F952000531FC2 /* TabsChangeLog.txt in Resources */,
|
|
||||||
186B2A8A2B88DA7F001AB71F /* TextAreaChangeLog.txt in Resources */,
|
|
||||||
EAEEEC962B1F893B00531FC2 /* ButtonChangeLog.txt in Resources */,
|
|
||||||
710607952B91A99500F2863F /* TitleletChangeLog.txt in Resources */,
|
|
||||||
EA5F86CC2A1D28B500BC83E4 /* ReleaseNotes.txt in Resources */,
|
|
||||||
EAEEEC982B1F8DD100531FC2 /* LineChangeLog.txt in Resources */,
|
|
||||||
EAEEECA22B1F92AD00531FC2 /* LabelChangeLog.txt in Resources */,
|
|
||||||
EA3362072891E14D0071C351 /* VerizonNHGeDS-Regular.otf in Resources */,
|
EA3362072891E14D0071C351 /* VerizonNHGeDS-Regular.otf in Resources */,
|
||||||
EAEEEC9A2B1F8E4400531FC2 /* TextLinkChangeLog.txt in Resources */,
|
|
||||||
1808BEC02BA456B700129230 /* CarouselScrollbarChangeLog.txt in Resources */,
|
|
||||||
18AE87542C06FE610075F181 /* CarouselChangeLog.txt in Resources */,
|
|
||||||
EAEEECAF2B1FC2BA00531FC2 /* ToggleViewChangeLog.txt in Resources */,
|
|
||||||
EAEEEC922B1F807300531FC2 /* BadgeChangeLog.txt in Resources */,
|
|
||||||
EAEEEC9E2B1F8F7700531FC2 /* ButtonGroupChangeLog.txt in Resources */,
|
|
||||||
18BDEE822B75316E00452358 /* ButtonIconChangeLog.txt in Resources */,
|
|
||||||
EA3362062891E14D0071C351 /* VerizonNHGeTX-Regular.otf in Resources */,
|
EA3362062891E14D0071C351 /* VerizonNHGeTX-Regular.otf in Resources */,
|
||||||
EA3362052891E14D0071C351 /* VerizonNHGeDS-Bold.otf in Resources */,
|
EA3362052891E14D0071C351 /* VerizonNHGeDS-Bold.otf in Resources */,
|
||||||
18450CF12BA1B19C009FDF2A /* BreadcrumbsChangeLog.txt in Resources */,
|
|
||||||
EAEEECA02B1F908200531FC2 /* BadgeIndicatorChangeLog.txt in Resources */,
|
|
||||||
EAA5EEB928ECD24B003B3210 /* Icons.xcassets in Resources */,
|
EAA5EEB928ECD24B003B3210 /* Icons.xcassets in Resources */,
|
||||||
EAEEECA92B1F969700531FC2 /* TooltipChangeLog.txt in Resources */,
|
|
||||||
186D13CF2BBC36EF00986B53 /* DropdownSelectChangeLog.txt in Resources */,
|
|
||||||
18FEA1B92BE1301700A56439 /* CalendarChangeLog.txt in Resources */,
|
|
||||||
EAEEEC9C2B1F8F0700531FC2 /* TextLinkCaretChangeLog.txt in Resources */,
|
|
||||||
EAA5EEE428F5B855003B3210 /* VerizonNHGDS-Light.otf in Resources */,
|
EAA5EEE428F5B855003B3210 /* VerizonNHGDS-Light.otf in Resources */,
|
||||||
EAC58C252BF2A7FB00BA39FA /* DatePickerChangeLog.txt in Resources */,
|
|
||||||
71B5FCBB2B95A0CA00269BCC /* PaginationChangeLog.txt in Resources */,
|
|
||||||
EAEEECAD2B1FC1A600531FC2 /* TitleLockupChangeLog.txt in Resources */,
|
|
||||||
EAEEECAB2B1FBF2A00531FC2 /* ToggleChangeLog.txt in Resources */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -1215,6 +1193,28 @@
|
|||||||
};
|
};
|
||||||
/* End PBXResourcesBuildPhase section */
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXShellScriptBuildPhase section */
|
||||||
|
EA78C79E2C0E4FFB00430AD1 /* Add ChangeLog.txt Files */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
alwaysOutOfDate = 1;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
name = "Add ChangeLog.txt Files";
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\necho \"TARGET_BUILD_DIR: ${TARGET_BUILD_DIR}\"\necho \"UNLOCALIZED_RESOURCES_FOLDER_PATH: ${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\necho \"Build Directory: ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n\nif [ $VDS_ADD_CHANGELOG_FILES -eq 1 ]; then \n echo \"Adding ChangeLog.txt files...\"\n \n # Find all files matching the pattern recursively\n TXT_FILES=$(find \"${SRCROOT}\" -name \"*ChangeLog.txt\")\n\n # Add each file \n for FILE in $TXT_FILES; do \n cp \"$FILE\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n echo \"Added $FILE to ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n done\n\n TXT_FILES=$(find \"${SRCROOT}\" -name \"ReleaseNotes.txt\")\n\n # Add each file \n for FILE in $TXT_FILES; do \n cp \"$FILE\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n echo \"Added $FILE to ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n done\n\nelse \n echo \"Skipping adding of ChangeLog.txt files\"\nfi\n";
|
||||||
|
};
|
||||||
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
EA336168288B19200071C351 /* Sources */ = {
|
EA336168288B19200071C351 /* Sources */ = {
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
@ -1266,7 +1266,9 @@
|
|||||||
EAC58BFD2BE935C300BA39FA /* TitleLockupTextColor.swift in Sources */,
|
EAC58BFD2BE935C300BA39FA /* TitleLockupTextColor.swift in Sources */,
|
||||||
EAACB89A2B927108006A3869 /* Valuing.swift in Sources */,
|
EAACB89A2B927108006A3869 /* Valuing.swift in Sources */,
|
||||||
EAE785312BA0A438009428EA /* UIImage+Helper.swift in Sources */,
|
EAE785312BA0A438009428EA /* UIImage+Helper.swift in Sources */,
|
||||||
|
EAF193422C134F3400C68D18 /* Table.swift in Sources */,
|
||||||
EAB5FEF5292D371F00998C17 /* ButtonBase.swift in Sources */,
|
EAB5FEF5292D371F00998C17 /* ButtonBase.swift in Sources */,
|
||||||
|
44A952D92BE384C40009F874 /* TableItemModel.swift in Sources */,
|
||||||
EA978EC5291D6AFE00ACC883 /* AnyLabelAttribute.swift in Sources */,
|
EA978EC5291D6AFE00ACC883 /* AnyLabelAttribute.swift in Sources */,
|
||||||
71ACE89C2BA0451200FB6ADC /* PaginationContainer.swift in Sources */,
|
71ACE89C2BA0451200FB6ADC /* PaginationContainer.swift in Sources */,
|
||||||
EAC71A1F2A2E173D00E47A9F /* RadioButton.swift in Sources */,
|
EAC71A1F2A2E173D00E47A9F /* RadioButton.swift in Sources */,
|
||||||
@ -1299,6 +1301,7 @@
|
|||||||
18B9763F2C11BA4A009271DF /* CarouselPaginationModel.swift in Sources */,
|
18B9763F2C11BA4A009271DF /* CarouselPaginationModel.swift in Sources */,
|
||||||
EAB1D2EA28AE84AA00DAE764 /* UIControlPublisher.swift in Sources */,
|
EAB1D2EA28AE84AA00DAE764 /* UIControlPublisher.swift in Sources */,
|
||||||
EAD068922A560B65002E3A2D /* LoaderViewController.swift in Sources */,
|
EAD068922A560B65002E3A2D /* LoaderViewController.swift in Sources */,
|
||||||
|
44BD43B62C04866600644F87 /* TableRowModel.swift in Sources */,
|
||||||
71FC86DA2B96F44C00700965 /* PaginationButton.swift in Sources */,
|
71FC86DA2B96F44C00700965 /* PaginationButton.swift in Sources */,
|
||||||
EABFEB642A26473700C4C106 /* NSAttributedString.swift in Sources */,
|
EABFEB642A26473700C4C106 /* NSAttributedString.swift in Sources */,
|
||||||
EAF7F13328A2A16500B287F5 /* AttachmentLabelAttributeModel.swift in Sources */,
|
EAF7F13328A2A16500B287F5 /* AttachmentLabelAttributeModel.swift in Sources */,
|
||||||
@ -1315,6 +1318,7 @@
|
|||||||
EAC58C0A2BED004E00BA39FA /* FieldType.swift in Sources */,
|
EAC58C0A2BED004E00BA39FA /* FieldType.swift in Sources */,
|
||||||
EA471F3A2A95587500CE9E58 /* LayoutConstraintable.swift in Sources */,
|
EA471F3A2A95587500CE9E58 /* LayoutConstraintable.swift in Sources */,
|
||||||
EAC58C292BF4118C00BA39FA /* DatePickerViewController.swift in Sources */,
|
EAC58C292BF4118C00BA39FA /* DatePickerViewController.swift in Sources */,
|
||||||
|
EAF193432C134F3800C68D18 /* TableCellItem.swift in Sources */,
|
||||||
EAB1D2CF28ABEF2B00DAE764 /* Typography+Base.swift in Sources */,
|
EAB1D2CF28ABEF2B00DAE764 /* Typography+Base.swift in Sources */,
|
||||||
EA0D1C3B2A6AD51B00E5C127 /* Typogprahy+Styles.swift in Sources */,
|
EA0D1C3B2A6AD51B00E5C127 /* Typogprahy+Styles.swift in Sources */,
|
||||||
EAF7F09A2899B17200B287F5 /* CATransaction.swift in Sources */,
|
EAF7F09A2899B17200B287F5 /* CATransaction.swift in Sources */,
|
||||||
@ -1352,6 +1356,7 @@
|
|||||||
EA985BF02968A93600F2FF2E /* TitleLockupEyebrowModel.swift in Sources */,
|
EA985BF02968A93600F2FF2E /* TitleLockupEyebrowModel.swift in Sources */,
|
||||||
EA5E30532950DDA60082B959 /* TitleLockup.swift in Sources */,
|
EA5E30532950DDA60082B959 /* TitleLockup.swift in Sources */,
|
||||||
EAD062B02A3B873E0015965D /* BadgeIndicator.swift in Sources */,
|
EAD062B02A3B873E0015965D /* BadgeIndicator.swift in Sources */,
|
||||||
|
44A952DD2BE3DA820009F874 /* TableFlowLayout.swift in Sources */,
|
||||||
EAA5EEB528ECBFB4003B3210 /* ImageLabelAttribute.swift in Sources */,
|
EAA5EEB528ECBFB4003B3210 /* ImageLabelAttribute.swift in Sources */,
|
||||||
18792A902B7431F2008C0D29 /* ButtonIconBadgeIndicatorModel.swift in Sources */,
|
18792A902B7431F2008C0D29 /* ButtonIconBadgeIndicatorModel.swift in Sources */,
|
||||||
EA0B18062A9E2D2D00F2D0CD /* SelectorItemBase.swift in Sources */,
|
EA0B18062A9E2D2D00F2D0CD /* SelectorItemBase.swift in Sources */,
|
||||||
@ -1413,6 +1418,7 @@
|
|||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
EA33617E288B19210071C351 /* Debug */ = {
|
EA33617E288B19210071C351 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = EA78C7A12C0E63D200430AD1 /* vds-dev.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
@ -1476,6 +1482,7 @@
|
|||||||
};
|
};
|
||||||
EA33617F288B19210071C351 /* Release */ = {
|
EA33617F288B19210071C351 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = EA78C7A22C0E63DD00430AD1 /* vds.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
@ -1533,11 +1540,12 @@
|
|||||||
};
|
};
|
||||||
EA336181288B19210071C351 /* Debug */ = {
|
EA336181288B19210071C351 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = EA78C7A12C0E63D200430AD1 /* vds-dev.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
|
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
|
||||||
CODE_SIGN_IDENTITY = "";
|
CODE_SIGN_IDENTITY = "";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 64;
|
CURRENT_PROJECT_VERSION = 66;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
@ -1570,11 +1578,12 @@
|
|||||||
};
|
};
|
||||||
EA336182288B19210071C351 /* Release */ = {
|
EA336182288B19210071C351 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = EA78C7A22C0E63DD00430AD1 /* vds.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
|
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
|
||||||
CODE_SIGN_IDENTITY = "";
|
CODE_SIGN_IDENTITY = "";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 64;
|
CURRENT_PROJECT_VERSION = 66;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
@ -1607,6 +1616,7 @@
|
|||||||
};
|
};
|
||||||
EA336184288B19210071C351 /* Debug */ = {
|
EA336184288B19210071C351 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = EA78C7A12C0E63D200430AD1 /* vds-dev.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
@ -1624,6 +1634,7 @@
|
|||||||
};
|
};
|
||||||
EA336185288B19210071C351 /* Release */ = {
|
EA336185288B19210071C351 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = EA78C7A22C0E63DD00430AD1 /* vds.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
|||||||
@ -161,7 +161,8 @@ open class SelectorItemBase<Selector: SelectorControlable>: Control, Errorable,
|
|||||||
/// Called once when a view is initialized and is used to Setup additional UI or other constants and configurations.
|
/// Called once when a view is initialized and is used to Setup additional UI or other constants and configurations.
|
||||||
open override func setup() {
|
open override func setup() {
|
||||||
super.setup()
|
super.setup()
|
||||||
|
|
||||||
|
selectorView.isAccessibilityElement = false
|
||||||
isAccessibilityElement = true
|
isAccessibilityElement = true
|
||||||
accessibilityTraits = .button
|
accessibilityTraits = .button
|
||||||
addSubview(mainStackView)
|
addSubview(mainStackView)
|
||||||
|
|||||||
@ -13,78 +13,14 @@ final class BreadcrumbCellItem: UICollectionViewCell {
|
|||||||
|
|
||||||
///Identifier for the BreadcrumbCellItem
|
///Identifier for the BreadcrumbCellItem
|
||||||
static let identifier: String = String(describing: BreadcrumbCellItem.self)
|
static let identifier: String = String(describing: BreadcrumbCellItem.self)
|
||||||
|
|
||||||
//--------------------------------------------------
|
|
||||||
// MARK: - Private Properties
|
|
||||||
//--------------------------------------------------
|
|
||||||
internal var stackView: UIStackView = {
|
|
||||||
return UIStackView().with {
|
|
||||||
$0.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
$0.axis = .horizontal
|
|
||||||
$0.distribution = .fill
|
|
||||||
$0.alignment = .fill
|
|
||||||
$0.spacing = VDSLayout.space1X
|
|
||||||
$0.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
|
|
||||||
$0.setContentHuggingPriority(.defaultHigh, for: .horizontal)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
internal var breadCrumbItem: BreadcrumbItem?
|
|
||||||
|
|
||||||
///separator label
|
|
||||||
private var separator: Label = Label().with {
|
|
||||||
$0.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
$0.textAlignment = .left
|
|
||||||
$0.numberOfLines = 1
|
|
||||||
$0.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
|
|
||||||
$0.setContentHuggingPriority(.defaultHigh, for: .horizontal)
|
|
||||||
$0.text = "/"
|
|
||||||
}
|
|
||||||
|
|
||||||
private let textColorConfiguration = SurfaceColorConfiguration(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark)
|
|
||||||
|
|
||||||
//--------------------------------------------------
|
|
||||||
// MARK: - Initializers
|
|
||||||
//--------------------------------------------------
|
|
||||||
override init(frame: CGRect) {
|
|
||||||
super.init(frame: frame)
|
|
||||||
setUp()
|
|
||||||
}
|
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
|
||||||
super.init(coder: coder)
|
|
||||||
setUp()
|
|
||||||
}
|
|
||||||
|
|
||||||
///Configuring the cell with default setup
|
|
||||||
private func setUp() {
|
|
||||||
separator.textColorConfiguration = textColorConfiguration.eraseToAnyColorable()
|
|
||||||
contentView.addSubview(stackView)
|
|
||||||
stackView.pinToSuperView()
|
|
||||||
separator.backgroundColor = .clear
|
|
||||||
}
|
|
||||||
|
|
||||||
///Updating the breadCrumbItem and UI based on the selected flag along with the surface
|
///Updating the breadCrumbItem and UI based on the selected flag along with the surface
|
||||||
func update(surface: Surface, hideSlash: Bool, breadCrumbItem: BreadcrumbItem) {
|
func update(breadCrumbItem: BreadcrumbItem) {
|
||||||
//update surface
|
contentView.subviews.forEach{$0.removeFromSuperview()}
|
||||||
separator.surface = surface
|
contentView.addSubview(breadCrumbItem)
|
||||||
breadCrumbItem.surface = surface
|
breadCrumbItem.pinToSuperView()
|
||||||
breadCrumbItem.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
|
breadCrumbItem.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
|
||||||
breadCrumbItem.setContentHuggingPriority(.defaultLow, for: .horizontal)
|
breadCrumbItem.setContentHuggingPriority(.defaultLow, for: .horizontal)
|
||||||
|
|
||||||
//remove previous views
|
|
||||||
stackView.arrangedSubviews.forEach { $0.removeFromSuperview() }
|
|
||||||
|
|
||||||
//add to stack
|
|
||||||
stackView.addArrangedSubview(separator)
|
|
||||||
stackView.addArrangedSubview(breadCrumbItem)
|
|
||||||
stackView.setCustomSpacing(VDSLayout.space1X, after: separator)
|
|
||||||
|
|
||||||
//update separator
|
|
||||||
separator.textColor = textColorConfiguration.getColor(surface)
|
|
||||||
separator.isHidden = hideSlash
|
|
||||||
self.breadCrumbItem = breadCrumbItem
|
|
||||||
setNeedsLayout()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -42,23 +42,28 @@ open class BreadcrumbItem: ButtonBase {
|
|||||||
textColorConfiguration.getColor(self)
|
textColorConfiguration.getColor(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The natural size for the receiving view, considering only properties of the view itself.
|
/// Determines if a slash is predended or not.
|
||||||
open override var intrinsicContentSize: CGSize {
|
open var hideSlash: Bool = false { didSet { setNeedsUpdate() } }
|
||||||
guard let titleLabel else { return super.intrinsicContentSize }
|
|
||||||
// Calculate the titleLabel's intrinsic content size
|
private var slashText = "/ "
|
||||||
let labelSize = titleLabel.sizeThatFits(CGSize(width: self.frame.width, height: CGFloat.greatestFiniteMagnitude))
|
|
||||||
// Adjust the size if needed (add any additional padding if your design requires)
|
open override var textAttributes: [any LabelAttributeModel]? {
|
||||||
let adjustedSize = CGSize(width: labelSize.width + contentEdgeInsets.left + contentEdgeInsets.right,
|
hideSlash
|
||||||
height: labelSize.height + contentEdgeInsets.top + contentEdgeInsets.bottom)
|
? nil
|
||||||
return adjustedSize
|
: [ColorLabelAttribute(location: 0,
|
||||||
|
length: 1,
|
||||||
|
color: surface == .light ? VDSColor.elementsPrimaryOnlight : VDSColor.elementsPrimaryOndark),
|
||||||
|
TextStyleLabelAttribute(location: 0,
|
||||||
|
length: 1,
|
||||||
|
textStyle: .bodySmall)
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Private Properties
|
// MARK: - Private Properties
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
private var textColorConfiguration = ControlColorConfiguration().with {
|
private var textColorConfiguration = ControlColorConfiguration().with {
|
||||||
$0.setSurfaceColors(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark, forState: .normal)
|
$0.setSurfaceColors(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark, forState: .normal)
|
||||||
$0.setSurfaceColors(VDSColor.interactiveActiveOnlight, VDSColor.interactiveActiveOndark, forState: .disabled)
|
|
||||||
$0.setSurfaceColors(VDSColor.interactiveActiveOnlight, VDSColor.interactiveActiveOndark, forState: .highlighted)
|
$0.setSurfaceColors(VDSColor.interactiveActiveOnlight, VDSColor.interactiveActiveOndark, forState: .highlighted)
|
||||||
$0.setSurfaceColors(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark, forState: .selected)
|
$0.setSurfaceColors(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark, forState: .selected)
|
||||||
}
|
}
|
||||||
@ -69,15 +74,51 @@ open class BreadcrumbItem: ButtonBase {
|
|||||||
/// Called once when a view is initialized and is used to Setup additional UI or other constants and configurations.
|
/// Called once when a view is initialized and is used to Setup additional UI or other constants and configurations.
|
||||||
open override func setup() {
|
open override func setup() {
|
||||||
super.setup()
|
super.setup()
|
||||||
|
|
||||||
|
titleLabel?.numberOfLines = 0
|
||||||
|
titleLabel?.lineBreakMode = .byWordWrapping
|
||||||
|
contentHorizontalAlignment = .left
|
||||||
|
|
||||||
isAccessibilityElement = true
|
isAccessibilityElement = true
|
||||||
accessibilityTraits = .link
|
accessibilityTraits = .link
|
||||||
contentHorizontalAlignment = .leading
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Used to make changes to the View based off a change events or from local properties.
|
/// Used to make changes to the View based off a change events or from local properties.
|
||||||
open override func updateView() {
|
open override func updateView() {
|
||||||
//always call last so the label is rendered
|
|
||||||
super.updateView()
|
//clear the arrays holding actions
|
||||||
|
accessibilityCustomActions = []
|
||||||
|
if let text, !text.isEmpty {
|
||||||
|
var updatedText = text
|
||||||
|
if updatedText.hasPrefix(slashText) && hideSlash {
|
||||||
|
updatedText = String(updatedText.dropFirst(slashText.count))
|
||||||
|
} else if !hideSlash, !updatedText.hasPrefix(slashText) {
|
||||||
|
updatedText = slashText + updatedText
|
||||||
|
}
|
||||||
|
|
||||||
|
//create the primary string
|
||||||
|
let mutableText = NSMutableAttributedString.mutableText(for: updatedText,
|
||||||
|
textStyle: textStyle,
|
||||||
|
useScaledFont: useScaledFont,
|
||||||
|
textColor: textColor,
|
||||||
|
alignment: titleLabel?.textAlignment ?? .center,
|
||||||
|
lineBreakMode: titleLabel?.lineBreakMode ?? .byTruncatingTail)
|
||||||
|
|
||||||
|
//apply any attributes
|
||||||
|
if let attributes = textAttributes {
|
||||||
|
mutableText.apply(attributes: attributes)
|
||||||
|
}
|
||||||
|
|
||||||
|
//set the attributed text
|
||||||
|
setAttributedTitle(mutableText, for: .normal)
|
||||||
|
setAttributedTitle(mutableText, for: .highlighted)
|
||||||
|
invalidateIntrinsicContentSize()
|
||||||
|
} else {
|
||||||
|
setAttributedTitle(nil, for: .normal)
|
||||||
|
setAttributedTitle(nil, for: .highlighted)
|
||||||
|
titleLabel?.text = nil
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -12,9 +12,6 @@ extension Breadcrumbs {
|
|||||||
|
|
||||||
///Text that goes in the breadcrumb item
|
///Text that goes in the breadcrumb item
|
||||||
public var text: String
|
public var text: String
|
||||||
|
|
||||||
/// Whether the Item can be clicked.
|
|
||||||
public var enabled: Bool
|
|
||||||
|
|
||||||
/// The Breadcrumb link to links to its respective page.
|
/// The Breadcrumb link to links to its respective page.
|
||||||
public var selected: Bool
|
public var selected: Bool
|
||||||
@ -22,9 +19,8 @@ extension Breadcrumbs {
|
|||||||
///Click event when you click on a breadcrumb item
|
///Click event when you click on a breadcrumb item
|
||||||
public var onClick: ((BreadcrumbItem) -> Void)?
|
public var onClick: ((BreadcrumbItem) -> Void)?
|
||||||
|
|
||||||
public init(text: String, enabeled: Bool = true, selected: Bool = false, onClick: ((BreadcrumbItem) -> Void)? = nil) {
|
public init(text: String, selected: Bool = false, onClick: ((BreadcrumbItem) -> Void)? = nil) {
|
||||||
self.text = text
|
self.text = text
|
||||||
self.enabled = enabeled
|
|
||||||
self.selected = selected
|
self.selected = selected
|
||||||
self.onClick = onClick
|
self.onClick = onClick
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,13 +32,6 @@ open class Breadcrumbs: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Current Surface and this is used to pass down to child objects that implement Surfacable
|
|
||||||
override open var surface: Surface {
|
|
||||||
didSet {
|
|
||||||
breadcrumbs.forEach { $0.surface = surface }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
open override var accessibilityElements: [Any]? {
|
open override var accessibilityElements: [Any]? {
|
||||||
get {
|
get {
|
||||||
return [containerView, breadcrumbs]
|
return [containerView, breadcrumbs]
|
||||||
@ -99,7 +92,6 @@ open class Breadcrumbs: View {
|
|||||||
breadcrumbs = breadcrumbModels.compactMap({ model in
|
breadcrumbs = breadcrumbModels.compactMap({ model in
|
||||||
let breadcrumbItem = BreadcrumbItem()
|
let breadcrumbItem = BreadcrumbItem()
|
||||||
breadcrumbItem.text = model.text
|
breadcrumbItem.text = model.text
|
||||||
breadcrumbItem.isEnabled = model.enabled
|
|
||||||
breadcrumbItem.isSelected = model.selected
|
breadcrumbItem.isSelected = model.selected
|
||||||
breadcrumbItem.onClick = { [weak self] breadcrumb in
|
breadcrumbItem.onClick = { [weak self] breadcrumb in
|
||||||
guard let self, breadcrumb.isEnabled else { return }
|
guard let self, breadcrumb.isEnabled else { return }
|
||||||
@ -166,17 +158,22 @@ extension Breadcrumbs: UICollectionViewDelegate, UICollectionViewDataSource, But
|
|||||||
|
|
||||||
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
||||||
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: BreadcrumbCellItem.identifier, for: indexPath) as? BreadcrumbCellItem else { return UICollectionViewCell() }
|
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: BreadcrumbCellItem.identifier, for: indexPath) as? BreadcrumbCellItem else { return UICollectionViewCell() }
|
||||||
let hideSlash = indexPath.row == 0
|
let breadcrumb = breadcrumbs[indexPath.row]
|
||||||
cell.update(surface: surface, hideSlash: hideSlash, breadCrumbItem: breadcrumbs[indexPath.row])
|
breadcrumb.hideSlash = breadcrumb == breadcrumbs.first
|
||||||
|
breadcrumb.surface = surface
|
||||||
|
cell.update(breadCrumbItem: breadcrumb)
|
||||||
return cell
|
return cell
|
||||||
}
|
}
|
||||||
|
|
||||||
public func collectionView(_ collectionView: UICollectionView, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
|
public func collectionView(_ collectionView: UICollectionView, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
|
||||||
|
|
||||||
let breadcrumb = breadcrumbs[indexPath.row]
|
let breadcrumb = breadcrumbs[indexPath.row]
|
||||||
let intrinsicSize = breadcrumb.intrinsicContentSize
|
breadcrumb.hideSlash = breadcrumb == breadcrumbs.first
|
||||||
let separatorFullWidth: CGFloat = indexPath.row == 0 ? 0 : VDSLayout.space1X + separatorWidth
|
|
||||||
let cellwidth = intrinsicSize.width + separatorFullWidth
|
let maxWidth = frame.width
|
||||||
return .init(width: min(cellwidth, collectionView.frame.width), height: intrinsicSize.height)
|
let intrinsicSize = breadcrumb.titleLabel!.sizeThatFits(.init(width: maxWidth, height: CGFloat.greatestFiniteMagnitude))
|
||||||
|
let cellwidth = min(maxWidth, intrinsicSize.width)
|
||||||
|
return .init(width: cellwidth, height: intrinsicSize.height)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func collectionView(_ collectionView: UICollectionView, buttonBaseAtIndexPath indexPath: IndexPath) -> ButtonBase {
|
public func collectionView(_ collectionView: UICollectionView, buttonBaseAtIndexPath indexPath: IndexPath) -> ButtonBase {
|
||||||
|
|||||||
@ -67,15 +67,20 @@ open class CalendarBase: Control, Changeable {
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Private Properties
|
// MARK: - Private Properties
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
internal var containerSize: CGSize { CGSize(width: 328, height: 336) }
|
internal var containerSize: CGSize { CGSize(width: widthDefault, height: 336) }
|
||||||
internal var calendar = Calendar.current
|
internal var calendar = Calendar.current
|
||||||
|
|
||||||
private let cellItemSize = CGSize(width: 40, height: 40)
|
private let cellItemSize = CGSize(width: 40, height: 40)
|
||||||
private let headerHeight = 88.0
|
private let headerHeight = 88.0
|
||||||
private let footerHeight = 40.0
|
private let footerHeight = 40.0
|
||||||
private let calendarWidth = 304.0
|
private let calendarWidth = 304.0
|
||||||
|
private let screenThreeSixty = 360.0
|
||||||
|
private let widthDefault = 328.0
|
||||||
|
private let widthTight = 320.0
|
||||||
|
|
||||||
private var heightConstraint: NSLayoutConstraint?
|
private var collectionViewLeadingConstraint: NSLayoutConstraint?
|
||||||
|
private var collectionViewHeightConstraint: NSLayoutConstraint?
|
||||||
|
private var containerWidthConstraint: NSLayoutConstraint?
|
||||||
private var containerHeightConstraint: NSLayoutConstraint?
|
private var containerHeightConstraint: NSLayoutConstraint?
|
||||||
private var selectedIndexPath : IndexPath?
|
private var selectedIndexPath : IndexPath?
|
||||||
private var dates: [Date] = []
|
private var dates: [Date] = []
|
||||||
@ -115,7 +120,7 @@ open class CalendarBase: Control, Changeable {
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
internal var containerBorderColorConfiguration = SurfaceColorConfiguration(VDSColor.elementsPrimaryOnlight , VDSColor.elementsPrimaryOndark)
|
internal var containerBorderColorConfiguration = SurfaceColorConfiguration(VDSColor.elementsPrimaryOnlight , VDSColor.elementsPrimaryOndark)
|
||||||
internal var backgroundColorConfiguration = SurfaceColorConfiguration(VDSFormControlsColor.backgroundOnlight, VDSFormControlsColor.backgroundOndark)
|
internal var backgroundColorConfiguration = SurfaceColorConfiguration(VDSFormControlsColor.backgroundOnlight, VDSFormControlsColor.backgroundOndark)
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Overrides
|
// MARK: - Overrides
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -133,21 +138,16 @@ open class CalendarBase: Control, Changeable {
|
|||||||
.pinTop()
|
.pinTop()
|
||||||
.pinBottom()
|
.pinBottom()
|
||||||
.pinLeadingGreaterThanOrEqualTo()
|
.pinLeadingGreaterThanOrEqualTo()
|
||||||
.pinTrailingLessThanOrEqualTo()
|
|
||||||
.width(containerSize.width)
|
|
||||||
.heightGreaterThanEqualTo(containerSize.height)
|
.heightGreaterThanEqualTo(containerSize.height)
|
||||||
containerView.centerXAnchor.constraint(equalTo: centerXAnchor).activate()
|
containerView.centerXAnchor.constraint(equalTo: centerXAnchor).activate()
|
||||||
|
|
||||||
// Calendar View
|
// Calendar View
|
||||||
containerView.addSubview(collectionView)
|
containerView.addSubview(collectionView)
|
||||||
let calendarHeight = containerSize.height - (2 * VDSLayout.space4X)
|
let calendarHeight = containerSize.height - (2 * VDSLayout.space4X)
|
||||||
let spacing = (containerSize.width - calendarWidth) / 2
|
|
||||||
|
|
||||||
collectionView
|
collectionView
|
||||||
.pinTop(VDSLayout.space4X)
|
.pinTop(VDSLayout.space4X)
|
||||||
.pinBottom(VDSLayout.space4X)
|
.pinBottom(VDSLayout.space4X)
|
||||||
.pinLeading(spacing)
|
|
||||||
.pinTrailing(spacing)
|
|
||||||
.width(calendarWidth)
|
.width(calendarWidth)
|
||||||
.heightGreaterThanEqualTo(calendarHeight)
|
.heightGreaterThanEqualTo(calendarHeight)
|
||||||
|
|
||||||
@ -163,16 +163,14 @@ open class CalendarBase: Control, Changeable {
|
|||||||
displayDate = fallsBetween ? displayDate : minDate
|
displayDate = fallsBetween ? displayDate : minDate
|
||||||
fetchDates(with: displayDate)
|
fetchDates(with: displayDate)
|
||||||
}
|
}
|
||||||
|
containerView.backgroundColor = transparentBackground ? .clear : backgroundColorConfiguration.getColor(self)
|
||||||
containerView.layer.backgroundColor = backgroundColorConfiguration.getColor(self).cgColor
|
containerView.layer.cornerRadius = VDSFormControls.borderRadius
|
||||||
if hideContainerBorder {
|
if hideContainerBorder {
|
||||||
containerView.layer.borderColor = nil
|
containerView.layer.borderColor = nil
|
||||||
containerView.layer.borderWidth = 0
|
containerView.layer.borderWidth = 0
|
||||||
containerView.layer.cornerRadius = 0
|
|
||||||
} else {
|
} else {
|
||||||
containerView.layer.borderColor = containerBorderColorConfiguration.getColor(self).cgColor
|
containerView.layer.borderColor = containerBorderColorConfiguration.getColor(self).cgColor
|
||||||
containerView.layer.borderWidth = VDSFormControls.borderWidth
|
containerView.layer.borderWidth = VDSFormControls.borderWidth
|
||||||
containerView.layer.cornerRadius = VDSFormControls.borderRadius
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,8 +189,6 @@ open class CalendarBase: Control, Changeable {
|
|||||||
// MARK: - Private Methods
|
// MARK: - Private Methods
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
func fetchDates(with aDate: Date) {
|
func fetchDates(with aDate: Date) {
|
||||||
heightConstraint?.isActive = false
|
|
||||||
containerHeightConstraint?.isActive = false
|
|
||||||
days.removeAll()
|
days.removeAll()
|
||||||
dates = aDate.calendarDisplayDays
|
dates = aDate.calendarDisplayDays
|
||||||
|
|
||||||
@ -204,17 +200,35 @@ open class CalendarBase: Control, Changeable {
|
|||||||
days.append(date.getDay())
|
days.append(date.getDay())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
updateViewConstraints()
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateViewConstraints() {
|
||||||
collectionView.reloadData()
|
collectionView.reloadData()
|
||||||
|
|
||||||
|
// container width && collection view leading
|
||||||
|
collectionViewLeadingConstraint?.isActive = false
|
||||||
|
containerWidthConstraint?.isActive = false
|
||||||
|
var width = containerView.frame.size.width
|
||||||
|
width = ((width > 0) && (width < screenThreeSixty)) ? ((width > widthTight) && (width < screenThreeSixty)) ? widthTight : containerView.frame.size.width : widthDefault
|
||||||
|
let spacing = (width - calendarWidth) / 2
|
||||||
|
collectionViewLeadingConstraint = collectionView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: spacing)
|
||||||
|
containerWidthConstraint = containerView.widthAnchor.constraint(equalToConstant: calendarWidth + ( 2 * spacing))
|
||||||
|
collectionViewLeadingConstraint?.isActive = true
|
||||||
|
containerWidthConstraint?.isActive = true
|
||||||
|
|
||||||
|
|
||||||
|
// container height && collection view height
|
||||||
|
collectionViewHeightConstraint?.isActive = false
|
||||||
|
containerHeightConstraint?.isActive = false
|
||||||
var height = collectionView.collectionViewLayout.collectionViewContentSize.height
|
var height = collectionView.collectionViewLayout.collectionViewContentSize.height
|
||||||
height = height > 0 ? height : containerSize.height
|
height = height > 0 ? height : containerSize.height
|
||||||
heightConstraint = collectionView.heightAnchor.constraint(equalToConstant: height)
|
|
||||||
containerHeightConstraint = containerView.heightAnchor.constraint(equalToConstant: height + (2 * VDSLayout.space4X))
|
containerHeightConstraint = containerView.heightAnchor.constraint(equalToConstant: height + (2 * VDSLayout.space4X))
|
||||||
heightConstraint?.isActive = true
|
collectionViewHeightConstraint = collectionView.heightAnchor.constraint(equalToConstant: height)
|
||||||
containerHeightConstraint?.isActive = true
|
containerHeightConstraint?.isActive = true
|
||||||
|
collectionViewHeightConstraint?.isActive = true
|
||||||
layoutIfNeeded()
|
layoutIfNeeded()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension CalendarBase: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
|
extension CalendarBase: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
|
||||||
|
|||||||
@ -147,12 +147,7 @@ open class DatePicker: EntryFieldBase, DatePickerViewControllerDelegate, UIPopov
|
|||||||
|
|
||||||
open override func updateAccessibility() {
|
open override func updateAccessibility() {
|
||||||
super.updateAccessibility()
|
super.updateAccessibility()
|
||||||
let label = "Date Picker, \(isReadOnly ? ", read only" : "")"
|
fieldStackView.accessibilityLabel = "Date Picker, \(accessibilityLabelText)"
|
||||||
if let errorText, showError {
|
|
||||||
fieldStackView.accessibilityLabel = "\(label) ,error, \(errorText)"
|
|
||||||
} else {
|
|
||||||
fieldStackView.accessibilityLabel = label
|
|
||||||
}
|
|
||||||
fieldStackView.accessibilityHint = isReadOnly || !isEnabled ? "" : "Double tap to open."
|
fieldStackView.accessibilityHint = isReadOnly || !isEnabled ? "" : "Double tap to open."
|
||||||
fieldStackView.accessibilityValue = value
|
fieldStackView.accessibilityValue = value
|
||||||
}
|
}
|
||||||
|
|||||||
@ -278,12 +278,7 @@ open class DropdownSelect: EntryFieldBase {
|
|||||||
|
|
||||||
open override func updateAccessibility() {
|
open override func updateAccessibility() {
|
||||||
super.updateAccessibility()
|
super.updateAccessibility()
|
||||||
let label = "Dropdown Select, \(isReadOnly ? ", read only" : "")"
|
fieldStackView.accessibilityLabel = "Dropdown Select, \(accessibilityLabelText)"
|
||||||
if let errorText, showError {
|
|
||||||
fieldStackView.accessibilityLabel = "\(label) ,error, \(errorText)"
|
|
||||||
} else {
|
|
||||||
fieldStackView.accessibilityLabel = label
|
|
||||||
}
|
|
||||||
fieldStackView.accessibilityHint = isReadOnly || !isEnabled ? "" : "Double tap to open."
|
fieldStackView.accessibilityHint = isReadOnly || !isEnabled ? "" : "Double tap to open."
|
||||||
fieldStackView.accessibilityValue = value
|
fieldStackView.accessibilityValue = value
|
||||||
}
|
}
|
||||||
|
|||||||
@ -314,8 +314,11 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
|
|||||||
super.text = newValue
|
super.text = newValue
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//clear out accessibility
|
||||||
|
accessibilityElements?.removeAll()
|
||||||
accessibilityCustomActions = []
|
accessibilityCustomActions = []
|
||||||
|
|
||||||
//create the primary string
|
//create the primary string
|
||||||
let mutableText = NSMutableAttributedString.mutableText(for: newValue,
|
let mutableText = NSMutableAttributedString.mutableText(for: newValue,
|
||||||
textStyle: textStyle,
|
textStyle: textStyle,
|
||||||
@ -337,6 +340,10 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//clear out accessibility
|
||||||
|
accessibilityElements?.removeAll()
|
||||||
|
accessibilityCustomActions = []
|
||||||
|
|
||||||
let mutableText = NSMutableAttributedString(attributedString: newValue)
|
let mutableText = NSMutableAttributedString(attributedString: newValue)
|
||||||
|
|
||||||
applyAttributes(mutableText)
|
applyAttributes(mutableText)
|
||||||
@ -348,7 +355,7 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
|
|||||||
private func applyAttributes(_ mutableAttributedString: NSMutableAttributedString) {
|
private func applyAttributes(_ mutableAttributedString: NSMutableAttributedString) {
|
||||||
actions = []
|
actions = []
|
||||||
|
|
||||||
if let attributes = attributes {
|
if let attributes {
|
||||||
mutableAttributedString.apply(attributes: attributes)
|
mutableAttributedString.apply(attributes: attributes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -359,7 +366,7 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
|
|||||||
|
|
||||||
let mutableAttributedString = NSMutableAttributedString(attributedString: attributedText)
|
let mutableAttributedString = NSMutableAttributedString(attributedString: attributedText)
|
||||||
|
|
||||||
if let attributes = attributes {
|
if let attributes {
|
||||||
//loop through the models attributes
|
//loop through the models attributes
|
||||||
for attribute in attributes {
|
for attribute in attributes {
|
||||||
|
|
||||||
|
|||||||
@ -243,6 +243,11 @@ open class RadioBoxItem: Control, Changeable, FormFieldable, Groupable {
|
|||||||
open override func updateAccessibility() {
|
open override func updateAccessibility() {
|
||||||
super.updateAccessibility()
|
super.updateAccessibility()
|
||||||
setAccessibilityLabel(for: [textLabel, subTextLabel, subTextRightLabel])
|
setAccessibilityLabel(for: [textLabel, subTextLabel, subTextRightLabel])
|
||||||
|
if let currentAccessibilityLabel = accessibilityLabel {
|
||||||
|
accessibilityLabel = "Radiobox, \(currentAccessibilityLabel)"
|
||||||
|
} else {
|
||||||
|
accessibilityLabel = "Radiobox"
|
||||||
|
}
|
||||||
if let accessibilityValueText {
|
if let accessibilityValueText {
|
||||||
accessibilityValue = strikethrough
|
accessibilityValue = strikethrough
|
||||||
? "\(strikethroughAccessibilityText), \(accessibilityValueText)"
|
? "\(strikethroughAccessibilityText), \(accessibilityValueText)"
|
||||||
|
|||||||
165
VDS/Components/Table/Table.swift
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
//
|
||||||
|
// Table.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Nadigadda, Sumanth on 24/04/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import UIKit
|
||||||
|
import VDSTokens
|
||||||
|
|
||||||
|
///Table is view composed of rows and columns, which takes any view into each cell and resizes based on the highest cell height.
|
||||||
|
@objc(VDSTable)
|
||||||
|
open class Table: View {
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Private Properties
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
/// CollectionView to show the rows and columns
|
||||||
|
private lazy var matrixView = SelfSizingCollectionView(frame: .zero, collectionViewLayout: flowLayout).with {
|
||||||
|
$0.register(TableCellItem.self, forCellWithReuseIdentifier: TableCellItem.Identifier)
|
||||||
|
$0.dataSource = self
|
||||||
|
$0.delegate = self
|
||||||
|
$0.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
$0.allowsSelection = false
|
||||||
|
$0.showsVerticalScrollIndicator = false
|
||||||
|
$0.showsHorizontalScrollIndicator = false
|
||||||
|
$0.isAccessibilityElement = true
|
||||||
|
$0.backgroundColor = .clear
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Custom flow layout to manage the height of the cells
|
||||||
|
private lazy var flowLayout = MatrixFlowLayout().with {
|
||||||
|
$0.delegate = self
|
||||||
|
$0.scrollDirection = .horizontal
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Array of ``TableItemModel`` by combining Header & Row items
|
||||||
|
private var tableData: [TableRowModel] {
|
||||||
|
return tableHeader + tableRows
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Enums
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
/// Enums used to define the padding for the cell edge spacing.
|
||||||
|
public enum Padding: String, CaseIterable {
|
||||||
|
case standard, compact
|
||||||
|
|
||||||
|
func horizontalValue() -> CGFloat {
|
||||||
|
switch self {
|
||||||
|
case .standard:
|
||||||
|
return UIDevice.isIPad ? VDSLayout.space8X : VDSLayout.space6X
|
||||||
|
case .compact:
|
||||||
|
return UIDevice.isIPad ? VDSLayout.space8X : VDSLayout.space6X
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func verticalValue() -> CGFloat {
|
||||||
|
switch self {
|
||||||
|
case .standard:
|
||||||
|
return UIDevice.isIPad ? VDSLayout.space8X : VDSLayout.space6X
|
||||||
|
case .compact:
|
||||||
|
return UIDevice.isIPad ? VDSLayout.space4X : VDSLayout.space3X
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Public Properties
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
/// Parameter to set striped status for the table
|
||||||
|
open var striped: Bool = false { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
|
/// Parameter to set the padding for the cell
|
||||||
|
open var padding: Padding = .standard { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
|
/// Parameter to show the table header row
|
||||||
|
open var tableHeader: [TableRowModel] = [] { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
|
/// Parameter to show the all table rows
|
||||||
|
open var tableRows: [TableRowModel] = [] { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
|
open var fillContainer: Bool = true { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
|
open var columnWidths: [CGFloat]? { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Overrides
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
///Called upon initializing the table view
|
||||||
|
open override func initialSetup() {
|
||||||
|
super.initialSetup()
|
||||||
|
addSubview(matrixView)
|
||||||
|
matrixView.pinToSuperView()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Will update the table view, when called becasue of any changes in component parameters
|
||||||
|
open override func updateView() {
|
||||||
|
super.updateView()
|
||||||
|
if fillContainer == true || (fillContainer == false && columnWidths == nil) {
|
||||||
|
columnWidths = calculateColumnWidths()
|
||||||
|
}
|
||||||
|
flowLayout.layoutPadding = padding
|
||||||
|
matrixView.reloadData()
|
||||||
|
matrixView.collectionViewLayout.invalidateLayout()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Resets to default settings.
|
||||||
|
open override func reset() {
|
||||||
|
super.reset()
|
||||||
|
striped = false
|
||||||
|
padding = .standard
|
||||||
|
tableHeader = []
|
||||||
|
tableRows = []
|
||||||
|
fillContainer = true
|
||||||
|
columnWidths = nil
|
||||||
|
setNeedsUpdate()
|
||||||
|
}
|
||||||
|
|
||||||
|
func calculateColumnWidths() -> [CGFloat] {
|
||||||
|
guard let noOfColumns = tableData.first?.columnsCount else { return [] }
|
||||||
|
let itemWidth = floor(matrixView.safeAreaLayoutGuide.layoutFrame.width / CGFloat(noOfColumns))
|
||||||
|
return Array(repeating: itemWidth, count: noOfColumns)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
extension Table: UICollectionViewDelegate, UICollectionViewDataSource, TableCollectionViewLayoutDataDelegate {
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - UICollectionViewDelegate & UICollectionViewDataSource
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
public func numberOfSections(in collectionView: UICollectionView) -> Int {
|
||||||
|
return tableData.count
|
||||||
|
}
|
||||||
|
public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
||||||
|
return tableData[section].columnsCount
|
||||||
|
}
|
||||||
|
|
||||||
|
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
||||||
|
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: TableCellItem.Identifier, for: indexPath) as? TableCellItem else { return UICollectionViewCell() }
|
||||||
|
let currentItem = tableData[indexPath.section].columns[indexPath.row]
|
||||||
|
let shouldStrip = striped ? (indexPath.section % 2 != 0) : false
|
||||||
|
cell.updateCell(content: currentItem, surface: surface, striped: shouldStrip, padding: padding)
|
||||||
|
return cell
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - TableCollectionViewLayoutDataDelegate
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
func collectionView(_ collectionView: UICollectionView, dataForItemAt indexPath: IndexPath) -> TableItemModel {
|
||||||
|
return tableData[indexPath.section].columns[indexPath.row]
|
||||||
|
}
|
||||||
|
|
||||||
|
func collectionView(_ collectionView: UICollectionView, widthForItemAt indexPath: IndexPath) -> CGFloat {
|
||||||
|
return columnWidths?[indexPath.row] ?? 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
92
VDS/Components/Table/TableCellItem.swift
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
//
|
||||||
|
// TableCellItem.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Nadigadda, Sumanth on 25/04/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import UIKit
|
||||||
|
import VDSTokens
|
||||||
|
|
||||||
|
final class TableCellItem: UICollectionViewCell {
|
||||||
|
|
||||||
|
/// Identifier for TableCellItem
|
||||||
|
static let Identifier: String = String(describing: TableCellItem.self)
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Private Properties
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
/// Main view which holds the content of the cell
|
||||||
|
private let containerView = View()
|
||||||
|
|
||||||
|
/// Line seperator for cell
|
||||||
|
private let separator: Line = Line()
|
||||||
|
|
||||||
|
/// Color configuration for default background color
|
||||||
|
private let backgroundColorConfiguration = SurfaceColorConfiguration(VDSColor.backgroundPrimaryLight, VDSColor.backgroundPrimaryDark)
|
||||||
|
|
||||||
|
/// Color configuration for striped background color
|
||||||
|
private let stripedColorConfiguration = SurfaceColorConfiguration(VDSColor.backgroundSecondaryLight, VDSColor.backgroundSecondaryDark)
|
||||||
|
|
||||||
|
/// Padding parameter to maintain the edge spacing of the containerView
|
||||||
|
private var padding: Table.Padding = .standard
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Initializers
|
||||||
|
//--------------------------------------------------
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
setupCell()
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
super.init(coder: coder)
|
||||||
|
setupCell()
|
||||||
|
}
|
||||||
|
|
||||||
|
private func setupCell() {
|
||||||
|
contentView.backgroundColor = .clear
|
||||||
|
|
||||||
|
addSubview(containerView)
|
||||||
|
containerView.pinToSuperView()
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Public Methods
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
/// Updates the cell content with ``TableItemModel`` and styling/padding attributes from other parameters
|
||||||
|
public func updateCell(content: TableItemModel, surface: Surface, striped: Bool = false, padding: Table.Padding = .standard) {
|
||||||
|
|
||||||
|
containerView.subviews.forEach({ $0.removeFromSuperview() })
|
||||||
|
self.padding = padding
|
||||||
|
containerView.surface = surface
|
||||||
|
containerView.backgroundColor = striped ? stripedColorConfiguration.getColor(surface) : backgroundColorConfiguration.getColor(surface)
|
||||||
|
|
||||||
|
|
||||||
|
containerView.addSubview(separator)
|
||||||
|
separator.pinLeading().pinTrailing().pinBottom()
|
||||||
|
|
||||||
|
separator.style = content.bottomLine ?? .primary
|
||||||
|
separator.isHidden = content.bottomLine == nil
|
||||||
|
separator.surface = surface
|
||||||
|
|
||||||
|
guard let component = content.component else { return }
|
||||||
|
|
||||||
|
containerView.addSubview(component)
|
||||||
|
|
||||||
|
if var surfacedView = component as? Surfaceable {
|
||||||
|
surfacedView.surface = surface
|
||||||
|
}
|
||||||
|
|
||||||
|
NSLayoutConstraint.activate([
|
||||||
|
component.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: VDSLayout.space1X),
|
||||||
|
component.topAnchor.constraint(greaterThanOrEqualTo: containerView.topAnchor, constant: padding.verticalValue()),
|
||||||
|
containerView.bottomAnchor.constraint(greaterThanOrEqualTo: component.bottomAnchor, constant: padding.verticalValue()),
|
||||||
|
containerView.trailingAnchor.constraint(greaterThanOrEqualTo: component.trailingAnchor, constant: padding.horizontalValue()),
|
||||||
|
containerView.centerYAnchor.constraint(equalTo: component.centerYAnchor)
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}
|
||||||
33
VDS/Components/Table/TableChangeLog.txt
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
03/31/2022
|
||||||
|
----------------
|
||||||
|
- Initial Brand 3.0 handoff
|
||||||
|
|
||||||
|
08/02/2022
|
||||||
|
----------------
|
||||||
|
- Included a VDS Note about the Padding prop name rationale
|
||||||
|
|
||||||
|
08/10/2022
|
||||||
|
----------------
|
||||||
|
- Updated default and inverted prop to light and dark surface.
|
||||||
|
|
||||||
|
08/29/2022
|
||||||
|
----------------
|
||||||
|
- Noted that Striped style is set to false as default. Clarified Anatomy description of line elements to say that both are configurable at both group and item level via bottomLine prop.
|
||||||
|
|
||||||
|
09/02/2022
|
||||||
|
----------------
|
||||||
|
- Added dev note enhancment to fix vertical 1px height jumping
|
||||||
|
|
||||||
|
09/13/2022
|
||||||
|
----------------
|
||||||
|
- Updated Anatomy element names per decisions made for design/dev docs.
|
||||||
|
|
||||||
|
10/04/2022
|
||||||
|
----------------
|
||||||
|
- Added dev note to Viewport > Striped > Compact padding to specify that auto-indent also applies to striped tables with default padding.
|
||||||
|
|
||||||
|
12/16/2022
|
||||||
|
----------------
|
||||||
|
- Updated border color values to use element tokens.
|
||||||
|
- Removed Line section from first position of Configurations.
|
||||||
|
- Replaced spacing values with tokens.
|
||||||
139
VDS/Components/Table/TableFlowLayout.swift
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
//
|
||||||
|
// TableFlowLayout.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Nadigadda, Sumanth on 02/05/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import VDSTokens
|
||||||
|
|
||||||
|
protocol TableCollectionViewLayoutDataDelegate: AnyObject {
|
||||||
|
func collectionView(_ collectionView: UICollectionView, dataForItemAt indexPath: IndexPath) -> TableItemModel
|
||||||
|
func collectionView(_ collectionView: UICollectionView, widthForItemAt indexPath: IndexPath) -> CGFloat
|
||||||
|
}
|
||||||
|
|
||||||
|
class MatrixFlowLayout : UICollectionViewFlowLayout {
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Private Properties
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
///Spacing between the pagination cells
|
||||||
|
private let defaultLeadingPadding: CGFloat = VDSLayout.space1X
|
||||||
|
|
||||||
|
/// Parameter to store the layout attributes of cell, while calculate the size & position of the cell
|
||||||
|
private var itemCache: [UICollectionViewLayoutAttributes] = []
|
||||||
|
|
||||||
|
/// Parameter to store the total height of the collectionView
|
||||||
|
private var layoutHeight: CGFloat = 0.0
|
||||||
|
|
||||||
|
/// Parameter to store the total width of the collectionView
|
||||||
|
private var layoutWidth: CGFloat = 0.0
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Internal Properties
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
weak var delegate: TableCollectionViewLayoutDataDelegate?
|
||||||
|
|
||||||
|
///padding type to be set from Table component, which is used to calculate the size & position of the cell.
|
||||||
|
var layoutPadding: Table.Padding = .standard
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Overrides
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
/// Calculates the layout attribute properties & total height of the collectionView
|
||||||
|
override func prepare() {
|
||||||
|
super.prepare()
|
||||||
|
|
||||||
|
itemCache.removeAll()
|
||||||
|
|
||||||
|
layoutHeight = 0.0
|
||||||
|
|
||||||
|
guard let collectionView, let delegate else { return }
|
||||||
|
|
||||||
|
let sections = collectionView.numberOfSections
|
||||||
|
|
||||||
|
var yPos: CGFloat = 0.0
|
||||||
|
|
||||||
|
///Looping through all the sections of the collectionView, visually these are rows
|
||||||
|
for currentSection in 0..<sections {
|
||||||
|
|
||||||
|
/// Reset the layout width after each row's calculation
|
||||||
|
layoutWidth = 0.0
|
||||||
|
|
||||||
|
let items = collectionView.numberOfItems(inSection: currentSection)
|
||||||
|
|
||||||
|
///Looping through all the items in section, visually these are each column in the row
|
||||||
|
for currentItem in 0..<items {
|
||||||
|
|
||||||
|
let indexPath = IndexPath(row: currentItem, section: currentSection)
|
||||||
|
|
||||||
|
/// Dividing the colletionView width by number of items(columns) in the row to determine width of each cell
|
||||||
|
let itemWidth = delegate.collectionView(collectionView, widthForItemAt: indexPath)
|
||||||
|
|
||||||
|
let selectedItem = delegate.collectionView(collectionView, dataForItemAt: indexPath)
|
||||||
|
|
||||||
|
///Calculate the estimated height of the cell
|
||||||
|
let itemHeight = estimateHeightFor(item: selectedItem, with: itemWidth)
|
||||||
|
|
||||||
|
layoutWidth += itemWidth
|
||||||
|
|
||||||
|
let attribute = UICollectionViewLayoutAttributes(forCellWith: indexPath)
|
||||||
|
|
||||||
|
let origin = CGPoint(x: itemWidth * CGFloat(indexPath.row), y: yPos)
|
||||||
|
|
||||||
|
let size = CGSize(width: itemWidth, height: itemHeight)
|
||||||
|
|
||||||
|
attribute.frame = CGRect(origin: origin, size: size)
|
||||||
|
|
||||||
|
itemCache.append(attribute)
|
||||||
|
}
|
||||||
|
|
||||||
|
///Determines the highest height from all the cells(columns) in the row
|
||||||
|
let highestHeightForSection = itemCache.filter({$0.indexPath.section == currentSection}).sorted(by: {$0.frame.size.height > $1.frame.size.height }).first?.frame.size.height ?? 0.0
|
||||||
|
|
||||||
|
///Set the highest height as height to all the cells in the row to make the row in uniform height.
|
||||||
|
itemCache.filter({$0.indexPath.section == currentSection}).forEach { attributes in
|
||||||
|
attributes.frame.size.height = highestHeightForSection
|
||||||
|
}
|
||||||
|
|
||||||
|
///Adds the height to y position for the next section
|
||||||
|
yPos += highestHeightForSection
|
||||||
|
}
|
||||||
|
|
||||||
|
layoutHeight = yPos
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Fetches estimated height by calling the cell's component estimated height and adding padding
|
||||||
|
private func estimateHeightFor(item: TableItemModel, with width: CGFloat) -> CGFloat {
|
||||||
|
|
||||||
|
let itemWidth = width - layoutPadding.horizontalValue() - defaultLeadingPadding
|
||||||
|
let maxSize = CGSize(width: itemWidth, height: CGFloat.greatestFiniteMagnitude)
|
||||||
|
let estItemSize = item.component?.systemLayoutSizeFitting(maxSize, withHorizontalFittingPriority: .required, verticalFittingPriority: .fittingSizeLevel) ?? CGSize(width: itemWidth, height: item.defaultHeight)
|
||||||
|
return estItemSize.height + (2 * layoutPadding.verticalValue())
|
||||||
|
}
|
||||||
|
|
||||||
|
///This will return the layout attributes for the elements in the defined rect
|
||||||
|
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
|
||||||
|
var visibleLayoutAttributes: [UICollectionViewLayoutAttributes] = []
|
||||||
|
for attributes in itemCache {
|
||||||
|
if attributes.frame.intersects(rect) {
|
||||||
|
visibleLayoutAttributes.append(attributes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return visibleLayoutAttributes
|
||||||
|
}
|
||||||
|
|
||||||
|
///This will return the layout attributes at particular indexPath
|
||||||
|
override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
|
||||||
|
return itemCache.filter({ $0.indexPath == indexPath}).first
|
||||||
|
}
|
||||||
|
|
||||||
|
///Returns the collectionview content size
|
||||||
|
override var collectionViewContentSize: CGSize {
|
||||||
|
return CGSize(width: layoutWidth, height: layoutHeight)
|
||||||
|
}
|
||||||
|
}
|
||||||
26
VDS/Components/Table/TableItemModel.swift
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
//
|
||||||
|
// TableItemModel.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Nadigadda, Sumanth on 02/05/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import UIKit
|
||||||
|
import VDSTokens
|
||||||
|
|
||||||
|
/// Model that represent the content of each cell of Table component
|
||||||
|
public struct TableItemModel {
|
||||||
|
|
||||||
|
public let defaultHeight: CGFloat = 50.0
|
||||||
|
|
||||||
|
public var bottomLine: Line.Style?
|
||||||
|
|
||||||
|
/// Component to be show in the Table cell
|
||||||
|
public var component: UIView?
|
||||||
|
|
||||||
|
public init(bottomLine: Line.Style? = nil, component: UIView? = nil) {
|
||||||
|
self.bottomLine = bottomLine
|
||||||
|
self.component = component
|
||||||
|
}
|
||||||
|
}
|
||||||
21
VDS/Components/Table/TableRowModel.swift
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
//
|
||||||
|
// TableRowModel.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Sumanth Nadigadda on 27/05/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public struct TableRowModel {
|
||||||
|
|
||||||
|
public var columns: [TableItemModel]
|
||||||
|
|
||||||
|
public var columnsCount: Int {
|
||||||
|
return columns.count
|
||||||
|
}
|
||||||
|
|
||||||
|
public init(columns: [TableItemModel]) {
|
||||||
|
self.columns = columns
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -241,6 +241,23 @@ open class EntryFieldBase: Control, Changeable, FormFieldInternalValidatable {
|
|||||||
|
|
||||||
open var rules = [AnyRule<String>]()
|
open var rules = [AnyRule<String>]()
|
||||||
|
|
||||||
|
open var accessibilityLabelText: String {
|
||||||
|
var accessibilityLabels = [String]()
|
||||||
|
if let text = titleLabel.text {
|
||||||
|
accessibilityLabels.append(text)
|
||||||
|
}
|
||||||
|
if isReadOnly {
|
||||||
|
accessibilityLabels.append("read only")
|
||||||
|
}
|
||||||
|
if !isEnabled {
|
||||||
|
accessibilityLabels.append("dimmed")
|
||||||
|
}
|
||||||
|
if let errorText, showError {
|
||||||
|
accessibilityLabels.append("error, \(errorText)")
|
||||||
|
}
|
||||||
|
return accessibilityLabels.joined(separator: ", ")
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Overrides
|
// MARK: - Overrides
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -376,7 +393,7 @@ open class EntryFieldBase: Control, Changeable, FormFieldInternalValidatable {
|
|||||||
if isEnabled {
|
if isEnabled {
|
||||||
let optionColorAttr = ColorLabelAttribute(location: oldText.count + 1,
|
let optionColorAttr = ColorLabelAttribute(location: oldText.count + 1,
|
||||||
length: 8,
|
length: 8,
|
||||||
color: VDSColor.elementsSecondaryOnlight)
|
color: secondaryColorConfiguration.getColor(self))
|
||||||
|
|
||||||
attributes.append(optionColorAttr)
|
attributes.append(optionColorAttr)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,20 @@ import Foundation
|
|||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
extension InputField {
|
extension InputField {
|
||||||
|
public class CreditCardNumberRule: Rule, Withable {
|
||||||
|
public var cardType: CreditCardType?
|
||||||
|
public var errorMessage: String = "You have exceeded the character limit."
|
||||||
|
|
||||||
|
public func isValid(value: String?) -> Bool {
|
||||||
|
guard let count = value?.count, let min = cardType?.minLength, let max = cardType?.maxLength else { return true }
|
||||||
|
if min == max {
|
||||||
|
return count == max
|
||||||
|
} else {
|
||||||
|
return count >= min && count <= max
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public enum CreditCardType: String, CaseIterable {
|
public enum CreditCardType: String, CaseIterable {
|
||||||
case generic
|
case generic
|
||||||
case visa
|
case visa
|
||||||
@ -19,6 +32,7 @@ extension InputField {
|
|||||||
case dinersClub
|
case dinersClub
|
||||||
case jcb
|
case jcb
|
||||||
case unionPay
|
case unionPay
|
||||||
|
case placeholder
|
||||||
|
|
||||||
public func imageName(surface: Surface) -> String {
|
public func imageName(surface: Surface) -> String {
|
||||||
func getImageName(_ surface: Surface, name: String) -> String {
|
func getImageName(_ surface: Surface, name: String) -> String {
|
||||||
@ -29,22 +43,30 @@ extension InputField {
|
|||||||
case .mastercard: return "mastercard"
|
case .mastercard: return "mastercard"
|
||||||
case .amex: return "amex"
|
case .amex: return "amex"
|
||||||
case .discover: return "discover"
|
case .discover: return "discover"
|
||||||
case .dinersClub: return "dinersClub"//getImageName(surface, name: "dinersClub")
|
case .dinersClub: return getImageName(surface, name: "dinersClub")
|
||||||
case .jcb: return "jcb"
|
case .jcb: return "jcb"
|
||||||
case .unionPay: return getImageName(surface, name: "unionPay")
|
case .unionPay: return getImageName(surface, name: "unionPay")
|
||||||
default: return getImageName(surface, name: "generic")
|
case .generic: return getImageName(surface, name: "generic")
|
||||||
|
default: return getImageName(surface, name: "placeholder")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var separatorIndices: [Int] {
|
func separatorIndices(_ length: Int) -> [Int] {
|
||||||
|
var indices: [Int] = [4, 8, 12]
|
||||||
switch self {
|
switch self {
|
||||||
case .dinersClub:
|
case .amex, .dinersClub:
|
||||||
return [4, 10]
|
indices = [4, 10]
|
||||||
|
case .unionPay:
|
||||||
|
if length == 19 {
|
||||||
|
indices = [5]
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return [4, 8, 12]
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return indices
|
||||||
}
|
}
|
||||||
|
|
||||||
var securityCodeLength: Int {
|
var securityCodeLength: Int {
|
||||||
if self == .amex {
|
if self == .amex {
|
||||||
return 4
|
return 4
|
||||||
@ -53,9 +75,21 @@ extension InputField {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var minLength: Int {
|
||||||
|
switch self {
|
||||||
|
case .visa: return 13
|
||||||
|
case .amex: return 15
|
||||||
|
case .dinersClub: return 14
|
||||||
|
default: return 16
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var maxLength: Int {
|
var maxLength: Int {
|
||||||
switch self {
|
switch self {
|
||||||
|
case .visa: return 19
|
||||||
|
case .amex: return 15
|
||||||
case .dinersClub: return 14
|
case .dinersClub: return 14
|
||||||
|
case .unionPay: return 19
|
||||||
default: return 16
|
default: return 16
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -129,9 +163,8 @@ extension InputField {
|
|||||||
|
|
||||||
override func appendRules(_ inputField: InputField) {
|
override func appendRules(_ inputField: InputField) {
|
||||||
if let text = inputField.textField.text, text.count > 0 {
|
if let text = inputField.textField.text, text.count > 0 {
|
||||||
let rule = CharacterCountRule().copyWith {
|
let rule = CreditCardNumberRule().copyWith {
|
||||||
$0.maxLength = inputField.cardType.maxLength
|
$0.cardType = inputField.cardType
|
||||||
$0.compareType = .equals
|
|
||||||
$0.errorMessage = "Enter a valid credit card."
|
$0.errorMessage = "Enter a valid credit card."
|
||||||
}
|
}
|
||||||
inputField.rules.append(.init(rule))
|
inputField.rules.append(.init(rule))
|
||||||
@ -141,7 +174,7 @@ extension InputField {
|
|||||||
override func textFieldDidBeginEditing(_ inputField: InputField, textField: UITextField) {
|
override func textFieldDidBeginEditing(_ inputField: InputField, textField: UITextField) {
|
||||||
//reset the textField when you start editing
|
//reset the textField when you start editing
|
||||||
value = nil
|
value = nil
|
||||||
inputField.cardType = .generic
|
inputField.cardType = .placeholder
|
||||||
textField.text = ""
|
textField.text = ""
|
||||||
inputField.validate()
|
inputField.validate()
|
||||||
updateLeftImage(inputField)
|
updateLeftImage(inputField)
|
||||||
@ -203,8 +236,8 @@ extension InputField {
|
|||||||
|
|
||||||
/// Private
|
/// Private
|
||||||
internal func formatCreditCardNumber(_ cardType: CreditCardType, number: String) -> String {
|
internal func formatCreditCardNumber(_ cardType: CreditCardType, number: String) -> String {
|
||||||
let formattedInput = number.filter { $0.isNumber } // Remove any existing slashes
|
let rawNumber = number.filter { $0.isNumber } // Remove any existing slashes
|
||||||
return String.format(formattedInput, indices: cardType.separatorIndices, with: " ")
|
return String.format(rawNumber, indices: cardType.separatorIndices(rawNumber.count), with: " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
internal func updateCardTypeIcon(_ inputField: InputField, rawNumber: String) {
|
internal func updateCardTypeIcon(_ inputField: InputField, rawNumber: String) {
|
||||||
@ -222,9 +255,8 @@ extension InputField {
|
|||||||
guard rawNumber.count == cardType.maxLength else { return formatCreditCardNumber(cardType, number: number) }
|
guard rawNumber.count == cardType.maxLength else { return formatCreditCardNumber(cardType, number: number) }
|
||||||
let lastFourDigits = rawNumber.suffix(4)
|
let lastFourDigits = rawNumber.suffix(4)
|
||||||
let maskedSection = String(repeating: "•", count: 12)
|
let maskedSection = String(repeating: "•", count: 12)
|
||||||
let formattedMaskSection = String.format(maskedSection, indices: cardType.separatorIndices, with: " ")
|
let formattedMaskSection = String.format(maskedSection, indices: cardType.separatorIndices(rawNumber.count), with: " ")
|
||||||
return formattedMaskSection + " " + lastFourDigits
|
return formattedMaskSection + " " + lastFourDigits
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,18 @@ import UIKit
|
|||||||
|
|
||||||
extension InputField {
|
extension InputField {
|
||||||
|
|
||||||
|
public class DateRule: Rule, Withable {
|
||||||
|
public var dateFormat: DateFormat?
|
||||||
|
public var errorMessage: String = "Enter a valid date"
|
||||||
|
private let dateFormatter = DateFormatter()
|
||||||
|
|
||||||
|
public func isValid(value: String?) -> Bool {
|
||||||
|
guard let value, let dateFormat, !value.isEmpty else { return true }
|
||||||
|
dateFormatter.dateFormat = dateFormat.formatString
|
||||||
|
return dateFormatter.date(from: value) != nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public enum DateFormat: String, CaseIterable {
|
public enum DateFormat: String, CaseIterable {
|
||||||
case mmyy
|
case mmyy
|
||||||
case mmddyy
|
case mmddyy
|
||||||
@ -46,6 +58,102 @@ extension InputField {
|
|||||||
case .mmddyyyy: [2,4]
|
case .mmddyyyy: [2,4]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func isValid(_ date: String) -> Bool {
|
||||||
|
let allowedCharacters = CharacterSet(charactersIn: "0123456789/")
|
||||||
|
|
||||||
|
// Check if the input contains only allowed characters
|
||||||
|
if date.rangeOfCharacter(from: allowedCharacters.inverted) != nil || date.isEmpty {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
let components = date.split(separator: "/")
|
||||||
|
|
||||||
|
|
||||||
|
func isMonth(_ month: String) -> Bool {
|
||||||
|
switch month.count {
|
||||||
|
case 1:
|
||||||
|
guard let month = Int(month), (0...1).contains(month) else { return false }
|
||||||
|
return true
|
||||||
|
case 2:
|
||||||
|
guard let month = Int(month), (1...12).contains(month) else { return false }
|
||||||
|
return true
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func isDay(_ day: String) -> Bool {
|
||||||
|
switch day.count {
|
||||||
|
case 1:
|
||||||
|
guard let day = Int(day),(1...3).contains(day) else { return false }
|
||||||
|
return true
|
||||||
|
case 2:
|
||||||
|
guard let day = Int(day), (1...31).contains(day) else { return false }
|
||||||
|
return true
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func isYear(_ year: String, max: Int) -> Bool {
|
||||||
|
guard year.count <= max else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
switch self {
|
||||||
|
case .mmyy:
|
||||||
|
if components.count > 2 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate month part
|
||||||
|
if components.count > 0, let monthPart = components.first {
|
||||||
|
if !isMonth(String(monthPart)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate year part
|
||||||
|
if components.count > 1, let yearPart = components.last {
|
||||||
|
if !isYear(String(yearPart), max: 2) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case .mmddyy, .mmddyyyy:
|
||||||
|
if components.count > 3 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate month part
|
||||||
|
if components.count > 0, let monthPart = components.first {
|
||||||
|
if !isMonth(String(monthPart)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate day part
|
||||||
|
if components.count > 1 {
|
||||||
|
let dayPart = components[1]
|
||||||
|
if !isDay(String(dayPart)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate year part
|
||||||
|
if components.count > 2, let yearPart = components.last {
|
||||||
|
if !isYear(String(yearPart), max: self == .mmddyy ? 2 : 4) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class DateHandler: FieldTypeHandler {
|
class DateHandler: FieldTypeHandler {
|
||||||
@ -58,16 +166,15 @@ extension InputField {
|
|||||||
|
|
||||||
override func updateView(_ inputField: InputField) {
|
override func updateView(_ inputField: InputField) {
|
||||||
minWidth = 114.0
|
minWidth = 114.0
|
||||||
placeholderText = inputField.dateFormat.placeholderText
|
//placeholderText = inputField.dateFormat.placeholderText
|
||||||
|
inputField.textField.formatText = inputField.dateFormat.placeholderText
|
||||||
super.updateView(inputField)
|
super.updateView(inputField)
|
||||||
}
|
}
|
||||||
|
|
||||||
override func appendRules(_ inputField: InputField) {
|
override func appendRules(_ inputField: InputField) {
|
||||||
if let text = inputField.textField.text, text.count > 0 {
|
if let text = inputField.textField.text, text.count > 0 {
|
||||||
let rule = CharacterCountRule().copyWith {
|
let rule = DateRule().copyWith {
|
||||||
$0.maxLength = inputField.dateFormat.maxLength
|
$0.dateFormat = inputField.dateFormat
|
||||||
$0.compareType = .equals
|
|
||||||
$0.errorMessage = "Enter a valid date."
|
$0.errorMessage = "Enter a valid date."
|
||||||
}
|
}
|
||||||
inputField.rules.append(.init(rule))
|
inputField.rules.append(.init(rule))
|
||||||
@ -86,9 +193,13 @@ extension InputField {
|
|||||||
if newText.count > inputField.dateFormat.maxLength {
|
if newText.count > inputField.dateFormat.maxLength {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if newText.count <= inputField.dateFormat.maxLength {
|
if newText.count <= inputField.dateFormat.maxLength {
|
||||||
textField.text = String.format(newText, indices: inputField.dateFormat.separatorIndices, with: "/")
|
let rawNumber = newText.filter { $0.isNumber }
|
||||||
|
let formatted = String.format(rawNumber, indices: inputField.dateFormat.separatorIndices, with: "/")
|
||||||
|
if inputField.dateFormat.isValid(formatted) || formatted.isEmpty {
|
||||||
|
textField.text = formatted
|
||||||
|
}
|
||||||
return false
|
return false
|
||||||
} else {
|
} else {
|
||||||
return true
|
return true
|
||||||
|
|||||||
@ -68,7 +68,11 @@ open class InputField: EntryFieldBase {
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - CreditCard/SecurityCode
|
// MARK: - CreditCard/SecurityCode
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
open var cardType: CreditCardType = .generic { didSet { setNeedsUpdate() } }
|
open var cardType: CreditCardType = .placeholder {
|
||||||
|
didSet {
|
||||||
|
setNeedsUpdate()
|
||||||
|
}
|
||||||
|
}
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Password
|
// MARK: - Password
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -97,7 +101,7 @@ open class InputField: EntryFieldBase {
|
|||||||
/// UITextField shown in the InputField.
|
/// UITextField shown in the InputField.
|
||||||
open var textField = TextField().with {
|
open var textField = TextField().with {
|
||||||
$0.translatesAutoresizingMaskIntoConstraints = false
|
$0.translatesAutoresizingMaskIntoConstraints = false
|
||||||
$0.font = TextStyle.bodyLarge.font
|
$0.textStyle = TextStyle.bodyLarge
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Color configuration for the textField.
|
/// Color configuration for the textField.
|
||||||
@ -186,9 +190,11 @@ open class InputField: EntryFieldBase {
|
|||||||
successLabel.textColorConfiguration = primaryColorConfiguration.eraseToAnyColorable()
|
successLabel.textColorConfiguration = primaryColorConfiguration.eraseToAnyColorable()
|
||||||
|
|
||||||
backgroundColorConfiguration.setSurfaceColors(VDSColor.feedbackSuccessBackgroundOnlight, VDSColor.feedbackSuccessBackgroundOndark, forState: .success)
|
backgroundColorConfiguration.setSurfaceColors(VDSColor.feedbackSuccessBackgroundOnlight, VDSColor.feedbackSuccessBackgroundOndark, forState: .success)
|
||||||
|
backgroundColorConfiguration.setSurfaceColors(VDSColor.feedbackSuccessBackgroundOnlight, VDSColor.feedbackSuccessBackgroundOndark, forState: [.success, .focused])
|
||||||
borderColorConfiguration.setSurfaceColors(VDSColor.feedbackSuccessOnlight, VDSColor.feedbackSuccessOndark, forState: .success)
|
|
||||||
|
|
||||||
|
borderColorConfiguration.setSurfaceColors(VDSColor.feedbackSuccessOnlight, VDSColor.feedbackSuccessOndark, forState: .success)
|
||||||
|
|
||||||
|
textField.textColorConfiguration = textFieldTextColorConfiguration
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func getFieldContainer() -> UIView {
|
open override func getFieldContainer() -> UIView {
|
||||||
@ -217,19 +223,14 @@ open class InputField: EntryFieldBase {
|
|||||||
|
|
||||||
super.updateView()
|
super.updateView()
|
||||||
|
|
||||||
|
textField.surface = surface
|
||||||
textField.isEnabled = isEnabled
|
textField.isEnabled = isEnabled
|
||||||
textField.isUserInteractionEnabled = isEnabled && !isReadOnly
|
textField.isUserInteractionEnabled = isEnabled && !isReadOnly
|
||||||
textField.textColor = textFieldTextColorConfiguration.getColor(self)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func updateAccessibility() {
|
open override func updateAccessibility() {
|
||||||
super.updateAccessibility()
|
super.updateAccessibility()
|
||||||
let label = "\(isReadOnly ? "read only" : "")"
|
textField.accessibilityLabel = accessibilityLabelText
|
||||||
if let errorText, showError {
|
|
||||||
textField.accessibilityLabel = "\(label) ,error, \(errorText)"
|
|
||||||
} else {
|
|
||||||
textField.accessibilityLabel = label
|
|
||||||
}
|
|
||||||
textField.accessibilityHint = isReadOnly || !isEnabled ? "" : "Double tap to open."
|
textField.accessibilityHint = isReadOnly || !isEnabled ? "" : "Double tap to open."
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,9 +248,9 @@ open class InputField: EntryFieldBase {
|
|||||||
successLabel.isHidden = false
|
successLabel.isHidden = false
|
||||||
errorLabel.isHidden = true
|
errorLabel.isHidden = true
|
||||||
statusIcon.name = .checkmarkAlt
|
statusIcon.name = .checkmarkAlt
|
||||||
statusIcon.color = VDSColor.paletteBlack
|
statusIcon.color = iconColorConfiguration.getColor(self)
|
||||||
statusIcon.surface = surface
|
statusIcon.surface = surface
|
||||||
statusIcon.isHidden = !isEnabled
|
statusIcon.isHidden = !isEnabled || state.contains(.focused)
|
||||||
} else {
|
} else {
|
||||||
successLabel.isHidden = true
|
successLabel.isHidden = true
|
||||||
}
|
}
|
||||||
@ -304,6 +305,7 @@ extension InputField: UITextFieldDelegate {
|
|||||||
public func textFieldDidBeginEditing(_ textField: UITextField) {
|
public func textFieldDidBeginEditing(_ textField: UITextField) {
|
||||||
fieldType.handler().textFieldDidBeginEditing(self, textField: textField)
|
fieldType.handler().textFieldDidBeginEditing(self, textField: textField)
|
||||||
updateContainerView()
|
updateContainerView()
|
||||||
|
updateErrorLabel()
|
||||||
}
|
}
|
||||||
|
|
||||||
public func textFieldDidEndEditing(_ textField: UITextField) {
|
public func textFieldDidEndEditing(_ textField: UITextField) {
|
||||||
|
|||||||
@ -8,6 +8,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import UIKit
|
import UIKit
|
||||||
import Combine
|
import Combine
|
||||||
|
import VDSTokens
|
||||||
|
|
||||||
@objc(VDSTextField)
|
@objc(VDSTextField)
|
||||||
open class TextField: UITextField, ViewProtocol, Errorable {
|
open class TextField: UITextField, ViewProtocol, Errorable {
|
||||||
@ -46,6 +47,23 @@ open class TextField: UITextField, ViewProtocol, Errorable {
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
private var formatLabel = Label().with {
|
||||||
|
$0.tag = 999
|
||||||
|
$0.textColorConfiguration = ViewColorConfiguration().with {
|
||||||
|
$0.setSurfaceColors(VDSColor.interactiveDisabledOnlight, VDSColor.interactiveDisabledOndark, forDisabled: true)
|
||||||
|
$0.setSurfaceColors(VDSColor.elementsSecondaryOnlight, VDSColor.elementsSecondaryOndark, forDisabled: false)
|
||||||
|
}.eraseToAnyColorable()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Format String similar to placeholder
|
||||||
|
open var formatText: String?
|
||||||
|
|
||||||
|
/// TextStyle used on the titleLabel.
|
||||||
|
open var textStyle: TextStyle = .defaultStyle { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
|
/// Will determine if a scaled font should be used for the titleLabel font.
|
||||||
|
open var useScaledFont: Bool = false { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
/// Key of whether or not updateView() is called in setNeedsUpdate()
|
/// Key of whether or not updateView() is called in setNeedsUpdate()
|
||||||
open var shouldUpdateView: Bool = true
|
open var shouldUpdateView: Bool = true
|
||||||
|
|
||||||
@ -55,6 +73,22 @@ open class TextField: UITextField, ViewProtocol, Errorable {
|
|||||||
|
|
||||||
open var errorText: String? { didSet { setNeedsUpdate() } }
|
open var errorText: String? { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
|
open var lineBreakMode: NSLineBreakMode = .byClipping { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
|
open override var isEnabled: Bool { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
|
open var textColorConfiguration: AnyColorable = ViewColorConfiguration().with {
|
||||||
|
$0.setSurfaceColors(VDSColor.interactiveDisabledOnlight, VDSColor.interactiveDisabledOndark, forDisabled: true)
|
||||||
|
$0.setSurfaceColors(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark, forDisabled: false)
|
||||||
|
}.eraseToAnyColorable(){ didSet { setNeedsUpdate() }}
|
||||||
|
|
||||||
|
open override var textColor: UIColor? {
|
||||||
|
get { textColorConfiguration.getColor(self) }
|
||||||
|
set { }
|
||||||
|
}
|
||||||
|
|
||||||
|
override public var text: String! { didSet { setNeedsUpdate() } }
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Lifecycle
|
// MARK: - Lifecycle
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -63,6 +97,8 @@ open class TextField: UITextField, ViewProtocol, Errorable {
|
|||||||
initialSetupPerformed = true
|
initialSetupPerformed = true
|
||||||
backgroundColor = .clear
|
backgroundColor = .clear
|
||||||
translatesAutoresizingMaskIntoConstraints = false
|
translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
|
||||||
|
clipsToBounds = true
|
||||||
setup()
|
setup()
|
||||||
setNeedsUpdate()
|
setNeedsUpdate()
|
||||||
}
|
}
|
||||||
@ -84,10 +120,43 @@ open class TextField: UITextField, ViewProtocol, Errorable {
|
|||||||
|
|
||||||
@objc func doneButtonAction() {
|
@objc func doneButtonAction() {
|
||||||
// Resigns the first responder status when 'Done' is tapped
|
// Resigns the first responder status when 'Done' is tapped
|
||||||
resignFirstResponder()
|
let _ = resignFirstResponder()
|
||||||
}
|
}
|
||||||
|
|
||||||
open func updateView() {}
|
open func updateView() {
|
||||||
|
updateLabel()
|
||||||
|
updateFormat()
|
||||||
|
}
|
||||||
|
|
||||||
|
open func updateFormat() {
|
||||||
|
guard let formatText else {
|
||||||
|
formatLabel.text = ""
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if viewWithTag(999) == nil {
|
||||||
|
addSubview(formatLabel)
|
||||||
|
formatLabel.pinToSuperView()
|
||||||
|
}
|
||||||
|
|
||||||
|
var attributes: [any LabelAttributeModel]?
|
||||||
|
var finalFormatText = formatText
|
||||||
|
|
||||||
|
if let text, !text.isEmpty {
|
||||||
|
//make the color of the matching text clear
|
||||||
|
attributes = [ColorLabelAttribute(location: 0, length: text.count, color: .clear)]
|
||||||
|
|
||||||
|
let startIndex = formatText.index(formatText.startIndex, offsetBy: text.count)
|
||||||
|
if startIndex < formatText.endIndex {
|
||||||
|
finalFormatText = text + formatText[startIndex...]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//set the label
|
||||||
|
formatLabel.surface = surface
|
||||||
|
formatLabel.text = finalFormatText
|
||||||
|
formatLabel.attributes = attributes
|
||||||
|
}
|
||||||
|
|
||||||
open func updateAccessibility() {
|
open func updateAccessibility() {
|
||||||
if let errorText, showError {
|
if let errorText, showError {
|
||||||
@ -139,6 +208,28 @@ open class TextField: UITextField, ViewProtocol, Errorable {
|
|||||||
}
|
}
|
||||||
return success
|
return success
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Private Methods
|
||||||
|
//--------------------------------------------------
|
||||||
|
private func updateLabel() {
|
||||||
|
|
||||||
|
//clear the arrays holding actions
|
||||||
|
accessibilityCustomActions = []
|
||||||
|
if let text, !text.isEmpty {
|
||||||
|
//create the primary string
|
||||||
|
let mutableText = NSMutableAttributedString.mutableText(for: text,
|
||||||
|
textStyle: textStyle,
|
||||||
|
useScaledFont: useScaledFont,
|
||||||
|
textColor: textColor!,
|
||||||
|
alignment: .left,
|
||||||
|
lineBreakMode: lineBreakMode)
|
||||||
|
attributedText = mutableText
|
||||||
|
} else {
|
||||||
|
attributedText = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension UITextField {
|
extension UITextField {
|
||||||
|
|||||||
@ -195,12 +195,7 @@ open class TextArea: EntryFieldBase {
|
|||||||
|
|
||||||
open override func updateAccessibility() {
|
open override func updateAccessibility() {
|
||||||
super.updateAccessibility()
|
super.updateAccessibility()
|
||||||
let label = "\(isReadOnly ? "read only" : "")"
|
textView.accessibilityLabel = accessibilityLabelText
|
||||||
if let errorText, showError {
|
|
||||||
textView.accessibilityLabel = "\(label) ,error, \(errorText)"
|
|
||||||
} else {
|
|
||||||
textView.accessibilityLabel = label
|
|
||||||
}
|
|
||||||
textView.accessibilityHint = isReadOnly || !isEnabled ? "" : "Double tap to open."
|
textView.accessibilityHint = isReadOnly || !isEnabled ? "" : "Double tap to open."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -108,7 +108,7 @@ open class TileContainerBase<PaddingType: DefaultValuing>: Control where Padding
|
|||||||
$0.clipsToBounds = true
|
$0.clipsToBounds = true
|
||||||
}
|
}
|
||||||
|
|
||||||
private var containerView = View()
|
internal var containerView = View()
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Public Properties
|
// MARK: - Public Properties
|
||||||
@ -342,9 +342,6 @@ open class TileContainerBase<PaddingType: DefaultValuing>: Control where Padding
|
|||||||
containerView.isAccessibilityElement = onClickSubscriber != nil
|
containerView.isAccessibilityElement = onClickSubscriber != nil
|
||||||
containerView.accessibilityHint = "Double tap to open."
|
containerView.accessibilityHint = "Double tap to open."
|
||||||
containerView.accessibilityLabel = nil
|
containerView.accessibilityLabel = nil
|
||||||
if let views = accessibilityElements?.compactMap({ $0 as? UIView }), !views.isEmpty {
|
|
||||||
containerView.setAccessibilityLabel(for: views)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open override var accessibilityElements: [Any]? {
|
open override var accessibilityElements: [Any]? {
|
||||||
@ -358,10 +355,18 @@ open class TileContainerBase<PaddingType: DefaultValuing>: Control where Padding
|
|||||||
}
|
}
|
||||||
items.append(containerView)
|
items.append(containerView)
|
||||||
}
|
}
|
||||||
items.append(contentsOf: contentView.subviews.filter({ $0.isAccessibilityElement == true }))
|
|
||||||
|
let elements = gatherAccessibilityElements(from: contentView)
|
||||||
|
let views = elements.compactMap({ $0 as? UIView })
|
||||||
|
|
||||||
|
//update accessibilityLabel
|
||||||
|
containerView.setAccessibilityLabel(for: views)
|
||||||
|
|
||||||
|
//append all children that are accessible
|
||||||
|
items.append(contentsOf: elements)
|
||||||
|
|
||||||
return items
|
return items
|
||||||
}
|
}
|
||||||
|
|
||||||
set {}
|
set {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -415,29 +415,37 @@ open class Tilelet: TileContainerBase<Tilelet.Padding> {
|
|||||||
|
|
||||||
/// Used to update any Accessibility properties.
|
/// Used to update any Accessibility properties.
|
||||||
open override var accessibilityElements: [Any]? {
|
open override var accessibilityElements: [Any]? {
|
||||||
|
|
||||||
get {
|
get {
|
||||||
var elements = [Any]()
|
var views = [UIView]()
|
||||||
if let superElements = super.accessibilityElements {
|
|
||||||
elements.append(contentsOf: superElements)
|
// grab the available views in order
|
||||||
}
|
|
||||||
if badgeModel != nil {
|
if badgeModel != nil {
|
||||||
elements.append(badge)
|
views.append(badge)
|
||||||
}
|
}
|
||||||
|
|
||||||
if titleModel != nil || subTitleModel != nil || eyebrowModel != nil {
|
if titleModel != nil || subTitleModel != nil || eyebrowModel != nil {
|
||||||
elements.append(titleLockup)
|
views.append(titleLockup)
|
||||||
}
|
}
|
||||||
if descriptiveIconModel != nil {
|
|
||||||
elements.append(descriptiveIcon)
|
containerView.setAccessibilityLabel(for: views)
|
||||||
|
|
||||||
|
// get the views to return
|
||||||
|
var items = [Any]()
|
||||||
|
if containerView.isAccessibilityElement {
|
||||||
|
if !accessibilityTraits.contains(.button) && !accessibilityTraits.contains(.link) {
|
||||||
|
containerView.accessibilityTraits = .button
|
||||||
|
} else {
|
||||||
|
containerView.accessibilityTraits = accessibilityTraits
|
||||||
|
}
|
||||||
|
items.append(containerView)
|
||||||
}
|
}
|
||||||
if directionalIconModel != nil {
|
|
||||||
elements.append(directionalIcon)
|
//append all other accessible views to traverse
|
||||||
}
|
items.append(contentsOf: views)
|
||||||
return elements
|
|
||||||
|
return items
|
||||||
}
|
}
|
||||||
|
|
||||||
set {}
|
set {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -532,7 +540,9 @@ open class Tilelet: TileContainerBase<Tilelet.Padding> {
|
|||||||
var showIconContainerView = false
|
var showIconContainerView = false
|
||||||
if let descriptiveIconModel {
|
if let descriptiveIconModel {
|
||||||
descriptiveIcon.name = descriptiveIconModel.name
|
descriptiveIcon.name = descriptiveIconModel.name
|
||||||
descriptiveIcon.colorConfiguration = descriptiveIconModel.colorConfiguration
|
if let color = descriptiveIconModel.iconColor?.uiColor {
|
||||||
|
descriptiveIcon.color = color
|
||||||
|
}
|
||||||
descriptiveIcon.size = descriptiveIconModel.size
|
descriptiveIcon.size = descriptiveIconModel.size
|
||||||
descriptiveIcon.surface = backgroundColorSurface
|
descriptiveIcon.surface = backgroundColorSurface
|
||||||
showIconContainerView = true
|
showIconContainerView = true
|
||||||
@ -540,7 +550,9 @@ open class Tilelet: TileContainerBase<Tilelet.Padding> {
|
|||||||
|
|
||||||
if let directionalIconModel {
|
if let directionalIconModel {
|
||||||
directionalIcon.name = directionalIconModel.iconType.iconName
|
directionalIcon.name = directionalIconModel.iconType.iconName
|
||||||
directionalIcon.colorConfiguration = directionalIconModel.colorConfiguration
|
if let color = directionalIconModel.iconColor?.uiColor {
|
||||||
|
directionalIcon.color = color
|
||||||
|
}
|
||||||
directionalIcon.size = directionalIconModel.size.value
|
directionalIcon.size = directionalIconModel.size.value
|
||||||
directionalIcon.surface = backgroundColorSurface
|
directionalIcon.surface = backgroundColorSurface
|
||||||
showIconContainerView = true
|
showIconContainerView = true
|
||||||
|
|||||||
@ -11,13 +11,33 @@ import VDSTokens
|
|||||||
|
|
||||||
extension Tilelet {
|
extension Tilelet {
|
||||||
|
|
||||||
|
public enum IconColor: Equatable {
|
||||||
|
case token(UIColor.VDSColor)
|
||||||
|
case custom(UIColor)
|
||||||
|
|
||||||
|
private var reflectedValue: String { String(reflecting: self) }
|
||||||
|
|
||||||
|
public static func == (lhs: Self, rhs: Self) -> Bool {
|
||||||
|
lhs.reflectedValue == rhs.reflectedValue
|
||||||
|
}
|
||||||
|
|
||||||
|
public var uiColor: UIColor {
|
||||||
|
switch self {
|
||||||
|
case .token(let color):
|
||||||
|
return color.uiColor
|
||||||
|
case .custom(let color):
|
||||||
|
return color
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Model that represents the options available for the descriptive icon.
|
/// Model that represents the options available for the descriptive icon.
|
||||||
public struct DescriptiveIcon {
|
public struct DescriptiveIcon {
|
||||||
/// A representation that will be used to render the icon with corresponding name.
|
/// A representation that will be used to render the icon with corresponding name.
|
||||||
public var name: Icon.Name
|
public var name: Icon.Name
|
||||||
|
|
||||||
/// Color of the icon.
|
/// Color of the icon.
|
||||||
public var colorConfiguration: SurfaceColorConfiguration
|
public var iconColor: IconColor?
|
||||||
|
|
||||||
/// Enum for a preset height and width for the icon.
|
/// Enum for a preset height and width for the icon.
|
||||||
public var size: Icon.Size
|
public var size: Icon.Size
|
||||||
@ -26,12 +46,12 @@ extension Tilelet {
|
|||||||
public var accessibleText: String
|
public var accessibleText: String
|
||||||
|
|
||||||
public init(name: Icon.Name = .multipleDocuments,
|
public init(name: Icon.Name = .multipleDocuments,
|
||||||
colorConfiguration: SurfaceColorConfiguration = .init(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark),
|
iconColor: IconColor? = nil,
|
||||||
size: Icon.Size = .medium,
|
size: Icon.Size = .medium,
|
||||||
accessibleText: String? = nil) {
|
accessibleText: String? = nil) {
|
||||||
|
|
||||||
self.name = name
|
self.name = name
|
||||||
self.colorConfiguration = colorConfiguration
|
self.iconColor = iconColor
|
||||||
self.accessibleText = accessibleText ?? name.rawValue
|
self.accessibleText = accessibleText ?? name.rawValue
|
||||||
self.size = size
|
self.size = size
|
||||||
}
|
}
|
||||||
@ -57,7 +77,7 @@ extension Tilelet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Color of the icon.
|
/// Color of the icon.
|
||||||
public var colorConfiguration: SurfaceColorConfiguration
|
public var iconColor: IconColor?
|
||||||
|
|
||||||
/// Accessible Text for the Icon
|
/// Accessible Text for the Icon
|
||||||
public var accessibleText: String
|
public var accessibleText: String
|
||||||
@ -68,13 +88,13 @@ extension Tilelet {
|
|||||||
/// Enum for a preset height and width for the icon.
|
/// Enum for a preset height and width for the icon.
|
||||||
public var size: IconSize
|
public var size: IconSize
|
||||||
|
|
||||||
public init(iconType: IconType = .rightArrow,
|
public init(iconType: IconType = .rightArrow,
|
||||||
colorConfiguration: SurfaceColorConfiguration = .init(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark),
|
iconColor: IconColor? = nil,
|
||||||
size: IconSize = .medium,
|
size: IconSize = .medium,
|
||||||
accessibleText: String? = nil) {
|
accessibleText: String? = nil) {
|
||||||
|
|
||||||
self.iconType = iconType
|
self.iconType = iconType
|
||||||
self.colorConfiguration = colorConfiguration
|
self.iconColor = iconColor
|
||||||
self.accessibleText = accessibleText ?? iconType.iconName.rawValue
|
self.accessibleText = accessibleText ?? iconType.iconName.rawValue
|
||||||
self.size = size
|
self.size = size
|
||||||
}
|
}
|
||||||
|
|||||||
@ -385,8 +385,8 @@ open class TitleLockup: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//pin the last view to the bottom of this view
|
//pin the last view to the bottom of this view
|
||||||
previousView?.pinBottom(0)
|
previousView?.pinBottom(anchor: bottomAnchor, priority: UILayoutPriority(700))
|
||||||
|
|
||||||
//debugging for borders
|
//debugging for borders
|
||||||
eyebrowLabel.debugBorder(show: hasDebugBorder, color: .green)
|
eyebrowLabel.debugBorder(show: hasDebugBorder, color: .green)
|
||||||
titleLabel.debugBorder(show: hasDebugBorder, color: .green)
|
titleLabel.debugBorder(show: hasDebugBorder, color: .green)
|
||||||
|
|||||||
@ -17,7 +17,8 @@ extension TitleLockup {
|
|||||||
public enum TextColor: Equatable {
|
public enum TextColor: Equatable {
|
||||||
case primary
|
case primary
|
||||||
case secondary
|
case secondary
|
||||||
case custom(UIColor, UIColor)
|
case token(UIColor.VDSColor)
|
||||||
|
case custom(UIColor)
|
||||||
|
|
||||||
private var reflectedValue: String { String(reflecting: self) }
|
private var reflectedValue: String { String(reflecting: self) }
|
||||||
|
|
||||||
@ -31,15 +32,18 @@ extension TitleLockup {
|
|||||||
TitleLockup.textColorPrimaryConfiguration
|
TitleLockup.textColorPrimaryConfiguration
|
||||||
case .secondary:
|
case .secondary:
|
||||||
TitleLockup.textColorSecondaryConfiguration
|
TitleLockup.textColorSecondaryConfiguration
|
||||||
case .custom(let lightColor, let darkColor):
|
case .token(let color):
|
||||||
SurfaceColorConfiguration(lightColor, darkColor).eraseToAnyColorable()
|
SurfaceColorConfiguration(color.uiColor, color.uiColor).eraseToAnyColorable()
|
||||||
|
case .custom(let color):
|
||||||
|
SurfaceColorConfiguration(color, color).eraseToAnyColorable()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum TitleTextColor: Equatable {
|
public enum TitleTextColor: Equatable {
|
||||||
case primary
|
case primary
|
||||||
case custom(UIColor, UIColor)
|
case token(UIColor.VDSColor)
|
||||||
|
case custom(UIColor)
|
||||||
|
|
||||||
private var reflectedValue: String { String(reflecting: self) }
|
private var reflectedValue: String { String(reflecting: self) }
|
||||||
|
|
||||||
@ -51,8 +55,10 @@ extension TitleLockup {
|
|||||||
switch self {
|
switch self {
|
||||||
case .primary:
|
case .primary:
|
||||||
TitleLockup.textColorPrimaryConfiguration
|
TitleLockup.textColorPrimaryConfiguration
|
||||||
case .custom(let lightColor, let darkColor):
|
case .token(let color):
|
||||||
SurfaceColorConfiguration(lightColor, darkColor).eraseToAnyColorable()
|
SurfaceColorConfiguration(color.uiColor, color.uiColor).eraseToAnyColorable()
|
||||||
|
case .custom(let color):
|
||||||
|
SurfaceColorConfiguration(color, color).eraseToAnyColorable()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -50,4 +50,16 @@ extension UIView {
|
|||||||
return isIntersecting
|
return isIntersecting
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func gatherAccessibilityElements(from view: UIView) -> [Any] {
|
||||||
|
var elements: [Any] = []
|
||||||
|
|
||||||
|
for subview in view.subviews {
|
||||||
|
if subview.isAccessibilityElement && subview.isVisibleOnScreen {
|
||||||
|
elements.append(subview)
|
||||||
|
}
|
||||||
|
elements.append(contentsOf: gatherAccessibilityElements(from: subview))
|
||||||
|
}
|
||||||
|
|
||||||
|
return elements
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,7 +48,7 @@ public enum Font: FontProtocol {
|
|||||||
/// - size: Size of the font
|
/// - size: Size of the font
|
||||||
/// - Returns: UIFont for the fontName and Size.
|
/// - Returns: UIFont for the fontName and Size.
|
||||||
public func font(ofSize size: CGFloat) -> UIFont{
|
public func font(ofSize size: CGFloat) -> UIFont{
|
||||||
DispatchQueue.once(block: { self.register() })
|
DispatchQueue.once(block: { Self.register() })
|
||||||
switch self {
|
switch self {
|
||||||
case .custom(let font):
|
case .custom(let font):
|
||||||
return font
|
return font
|
||||||
|
|||||||
@ -18,7 +18,7 @@ public protocol FontProtocol {
|
|||||||
extension FontProtocol {
|
extension FontProtocol {
|
||||||
|
|
||||||
/// Registers the fonts used in the VDS Framework.
|
/// Registers the fonts used in the VDS Framework.
|
||||||
public func register() {
|
public static func register() {
|
||||||
guard let bundle = Bundle(identifier: "com.vzw.vds") else { return }
|
guard let bundle = Bundle(identifier: "com.vzw.vds") else { return }
|
||||||
Self.allCases.forEach{ font in
|
Self.allCases.forEach{ font in
|
||||||
if let url = bundle.url(forResource: font.fontName, withExtension: font.fontFileExtension){
|
if let url = bundle.url(forResource: font.fontName, withExtension: font.fontFileExtension){
|
||||||
@ -51,7 +51,7 @@ extension FontProtocol {
|
|||||||
/// - size: Size of the font
|
/// - size: Size of the font
|
||||||
/// - Returns: UIFont for the fontName and Size.
|
/// - Returns: UIFont for the fontName and Size.
|
||||||
public func font(ofSize size: CGFloat) -> UIFont{
|
public func font(ofSize size: CGFloat) -> UIFont{
|
||||||
DispatchQueue.once(block: { self.register() })
|
DispatchQueue.once(block: { Self.register() })
|
||||||
guard let found = UIFont(name: self.fontName, size: size) else { return .systemFont(ofSize: size) }
|
guard let found = UIFont(name: self.fontName, size: size) else { return .systemFont(ofSize: size) }
|
||||||
return found
|
return found
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"images" : [
|
"images" : [
|
||||||
{
|
{
|
||||||
"filename" : "DCI_Horizontal-2_onlight.svg",
|
"filename" : "DCI_Horizontal-2_ondark-2.svg",
|
||||||
"idiom" : "universal"
|
"idiom" : "universal"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@ -0,0 +1,62 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33.100002288818359 23.099998474121094">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.cls-1 {
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-1, .cls-2, .cls-3 {
|
||||||
|
stroke-width: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-2 {
|
||||||
|
fill: #0069aa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-3 {
|
||||||
|
fill: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<g>
|
||||||
|
<path class="cls-1" d="M10.600000381469727,20.5h-.199999809265137v1.100000381469727h.199999809265137c.399999618530273,0,.600000381469727-.100000381469727.600000381469727-.600000381469727s-.199999809265137-.5-.5-.5h-.100000381469727Z"/>
|
||||||
|
<polygon class="cls-1" points="16.200000762939453 21.799999237060547 16.899999618530273 21.799999237060547 16.5 20.799999237060547 16.200000762939453 21.799999237060547"/>
|
||||||
|
<path class="cls-1" d="M12.300000190734863,16.5c0-.399999618530273-.199999809265137-.600000381469727-.600000381469727-.600000381469727s-.699999809265137.299999237060547-.800000190734863.799999237060547h1.199999809265137q.199999809265137,0,.199999809265137-.200000762939453l.000000953674316.000001907348633Z"/>
|
||||||
|
<path class="cls-1" d="M2.099999904632568,18.600000381469727c1.5,0,2-1.100000381469727,2-2.200000762939453s-.799999952316284-2.199999809265137-2.200000047683716-2.199999809265137-.399999976158142,0-.5,0v3.800000190734863c0,.5.399999976158142.600000381469727.700000047683716.600000381469727h0Z"/>
|
||||||
|
<path class="cls-1" d="M23.200000762939453,20.5c-.600000381469727,0-.899999618530273.600000381469727-.899999618530273,1.100000381469727s.299999237060547,1.299999237060547.899999618530273,1.299999237060547.899999618530273-.600000381469727.899999618530273-1.200000762939453-.299999237060547-1.200000762939453-.899999618530273-1.200000762939453v.000001907348633Z"/>
|
||||||
|
<path class="cls-1" d="M30.899999618530273,18.700000762939453c.799999237060547,0,1.100000381469727-.700000762939453,1.100000381469727-1.399999618530273s-.600000381469727-1.399999618530273-1.100000381469727-1.399999618530273-.5.200000762939453-.700000762939453.299999237060547v1.700000762939453c0,.299999237060547.200000762939453.700000762939453.700000762939453.700000762939453h0v.099998474121094Z"/>
|
||||||
|
<polygon class="cls-1" points="28.600000381469727 21.799999237060547 29.299999237060547 21.799999237060547 29 20.799999237060547 28.600000381469727 21.799999237060547"/>
|
||||||
|
<path class="cls-1" d="M32.700000762939453,20.299999237060547c-.200000762939453,0-.299999237060547.100000381469727-.299999237060547.299999237060547s.099998474121094.299999237060547.299999237060547.299999237060547.299999237060547-.100000381469727.299999237060547-.299999237060547-.099998474121094-.299999237060547-.299999237060547-.299999237060547ZM32.900001525878906,20.899999618530273h0l-.099998474121094-.200000762939453h0v.200000762939453h-.200000762939453v-.299999237060547h.200000762939453s.099998474121094,0,.099998474121094.100000381469727v.100000381469727h0v.200000762939453h0v-.100002288818359Z"/>
|
||||||
|
<path class="cls-3" d="M2,18.799999237060547c2.5,0,2.900000095367432-1.700000762939453,2.900000095367432-2.399999618530273,0-1.199999809265137-1-2.399999618530273-2.799999952316284-2.399999618530273s-.899999976158142,0-1.200000047683716,0H.100000083446503v.199999809265137c.300000011920929,0,.600000023841858,0,.600000023841858.600000381469727v3.40000057220459c0,.5-.199999988079071.5-.600000023841858.5v.200000762939453h1.899999916553497v-.100002288818359ZM1.399999976158142,14.199999809265137h.600000023841858c1.400000095367432,0,2.199999809265137.899999618530273,2.199999809265137,2.199999809265137,0,1.30000114440918-.5,2.200000762939453-2,2.200000762939453s-.700000047683716,0-.700000047683716-.600000381469727v-3.800000190734863h-.099999785423279Z"/>
|
||||||
|
<path class="cls-3" d="M5.800000190734863,14.5c.199999809265137,0,.300000190734863-.199999809265137.300000190734863-.399999618530273s-.199999809265137-.300000190734863-.300000190734863-.300000190734863-.300000190734863.199999809265137-.300000190734863.300000190734863.199999809265137.399999618530273.300000190734863.399999618530273Z"/>
|
||||||
|
<path class="cls-3" d="M6.599999904632568,18.799999237060547v-.200000762939453h-.099999904632568c-.199999809265137,0-.300000190734863,0-.300000190734863-.200000762939453v-2.800000190734863h-.099999904632568s-.400000095367432.100000381469727-.800000190734863.199999809265137h0c.300000190734863.199999809265137.400000095367432.299999237060547.400000095367432.600000381469727v1.899999618530273c0,.200000762939453-.099999904632568.200000762939453-.300000190734863.200000762939453h-.099999904632568v.200000762939453h1.5l-.199999809265137.100000381469727Z"/>
|
||||||
|
<path class="cls-3" d="M10.300000190734863,18.600000381469727h-.100000381469727c-.199999809265137,0-.399999618530273,0-.399999618530273-.200000762939453v-1.799999237060547c0-.5-.199999809265137-1-.800000190734863-1s-.800000190734863.199999809265137-1.199999809265137.5v-.5h0c-.300000190734863.100000381469727-.599999904632568.199999809265137-.900000095367432.300000190734863h0c.300000190734863.300000190734863.400000095367432.300000190734863.400000095367432.59999942779541v1.899999618530273c0,.200000762939453-.099999904632568.200000762939453-.300000190734863.200000762939453h-.099999904632568v.200000762939453h1.500000476837158v-.200000762939453h-.100000381469727c-.199999809265137,0-.300000190734863,0-.300000190734863-.200000762939453v-2.100000381469727c.199999809265137-.100000381469727.600000381469727-.300000190734863.800000190734863-.300000190734863.399999618530273,0,.600000381469727.199999809265137.600000381469727.59999942779541v1.799999237060547c0,.200000762939453-.100000381469727.200000762939453-.300000190734863.200000762939453h-.100000381469727v.200000762939453h1.5v-.200000762939453h0l-.199999809265137.000001907348633Z"/>
|
||||||
|
<path class="cls-3" d="M11.600000381469727,18.899999618530273c.600000381469727,0,1-.399999618530273,1.300000190734863-.799999237060547h-.100000381469727c-.300000190734863.200000762939453-.600000381469727.399999618530273-.899999618530273.399999618530273-.600000381469727,0-1-.5-1-1.200000762939453v-.399999618530273h2v-.200000762939453c0-.699999809265137-.600000381469727-1.100000381469727-1.199999809265137-1.100000381469727s-1.399999618530273.399999618530273-1.399999618530273,1.799999237060547.199999809265137,1.5,1.300000190734863,1.5l-.000000953674316.000001907348633ZM11.699999809265137,15.800000190734863c.399999618530273,0,.600000381469727.300000190734863.600000381469727.59999942779541s0,.200000762939453-.199999809265137.200000762939453h-1.199999809265137c0-.5.399999618530273-.800000190734863.800000190734863-.800000190734863h-.000000953674316Z"/>
|
||||||
|
<path class="cls-3" d="M14.899999618530273,18.799999237060547v-.200000762939453h-.399999618530273c-.199999809265137,0-.300000190734863,0-.300000190734863-.200000762939453v-1.600000381469727c0-.399999618530273.399999618530273-.600000381469727.5-.600000381469727.199999809265137,0,.199999809265137.200000762939453.5.200000762939453s.300000190734863-.200000762939453.300000190734863-.399999618530273-.199999809265137-.399999618530273-.399999618530273-.399999618530273c-.399999618530273,0-.699999809265137.5-.899999618530273.700000762939453h0v-.600000381469727h0s-.300000190734863.199999809265137-.899999618530273.399999618530273h0c.100000381469727.200000762939453.399999618530273.200000762939453.399999618530273.399999618530273v2c0,.200000762939453-.100000381469727.200000762939453-.300000190734863.200000762939453h-.199999809265137v.200000762939453h1.800000190734863l-.100001335144043-.100000381469727Z"/>
|
||||||
|
<path class="cls-3" d="M16.600000381469727,18.700000762939453c-.5,0-.800000190734863-.399999618530273-.899999618530273-.899999618530273h-.100000381469727v.899999618530273c.199999809265137.100000381469727.600000381469727.200000762939453.899999618530273.200000762939453.799999237060547,0,1.200000762939453-.5,1.200000762939453-1,0-1.100000381469727-1.600000381469727-.899999618530273-1.600000381469727-1.700000762939453s.299999237060547-.5.5-.5c.5,0,.700000762939453.299999237060547.799999237060547.700000762939453h.200000762939453v-.699999809265137c-.299999237060547-.100000381469727-.600000381469727-.199999809265137-.799999237060547-.199999809265137-.799999237060547,0-1.100000381469727.5-1.100000381469727.899999618530273,0,1.100000381469727,1.5.899999618530273,1.5,1.700000762939453s-.100000381469727.5-.600000381469727.5h0v.099998474121094Z"/>
|
||||||
|
<path class="cls-3" d="M23.899999618530273,18.5l.200000762939453-1h-.200000762939453c-.100000381469727.700000762939453-.700000762939453,1.200000762939453-1.399999618530273,1.200000762939453-1.100000381469727,0-2.100000381469727-1-2.100000381469727-2.399999618530273s1.200000762939453-2.199999809265137,2-2.199999809265137,1.399999618530273.300000190734863,1.5,1.100000381469727h.200000762939453v-1c-.600000381469727-.199999809265137-1.100000381469727-.399999618530273-1.700000762939453-.399999618530273-1.399999618530273,0-2.600000381469727,1-2.600000381469727,2.500000953674316,0,1.5,1,2.600000381469727,2.700000762939453,2.600000381469727s1.200000762939453-.200000762939453,1.5-.399999618530273h0l-.100000381469727-.000003814697266Z"/>
|
||||||
|
<path class="cls-3" d="M25.799999237060547,18.799999237060547v-.200000762939453h-.100000381469727c-.200000762939453,0-.399999618530273,0-.399999618530273-.200000762939453v-4.90000057220459h-.100000381469727c-.100000381469727,0-.399999618530273.199999809265137-.700000762939453.300000190734863h0c.299999237060547.199999809265137.399999618530273.199999809265137.399999618530273.699999809265137v3.90000057220459c0,.200000762939453-.100000381469727.200000762939453-.299999237060547.200000762939453h-.100000381469727v.200000762939453h1.5-.19999885559082Z"/>
|
||||||
|
<path class="cls-3" d="M26.200000762939453,16.299999237060547v1.799999237060547c0,.600000381469727.399999618530273.799999237060547.799999237060547.799999237060547s.799999237060547-.200000762939453,1.200000762939453-.600000381469727v.600000381469727h0c.100000381469727,0,.700000762939453-.200000762939453,1-.200000762939453h0c0-.100000381469727-.200000762939453-.100000381469727-.299999237060547-.100000381469727-.100000381469727,0-.200000762939453,0-.200000762939453-.100000381469727v-2.700000762939453s-.5,0-1.100000381469727.100000381469727h0c.200000762939453.200000762939453.600000381469727.299999237060547.600000381469727.399999618530273v1.899999618530273c-.299999237060547.200000762939453-.600000381469727.399999618530273-.899999618530273.399999618530273-.600000381469727,0-.600000381469727-.600000381469727-.600000381469727-.799999237060547v-2h-.899999618530273c.399999618530273.199999809265137.399999618530273.299999237060547.399999618530273.5v.000003814697266Z"/>
|
||||||
|
<path class="cls-3" d="M29.600000381469727,14.5v3c0,.399999618530273,0,.799999237060547-.100000381469727,1.200000762939453h.30000114440918c.200000762939453,0,.5.200000762939453,1,.200000762939453,1,0,1.69999885559082-.899999618530273,1.69999885559082-1.799999237060547s-.5-1.5-1.299999237060547-1.5-.799999237060547.300000190734863-1,.5v-2.700000762939453h-.100000381469727c-.100000381469727,0-.399999618530273.199999809265137-.700000762939453.300000190734863h0c.299999237060547.199999809265137.399999618530273.199999809265137.399999618530273.699999809265137h0l-.19999885559082.099998474121094ZM30.200000762939453,16.299999237060547c.200000762939453-.200000762939453.399999618530273-.300000190734863.700000762939453-.300000190734863.5,0,1.099998474121094.59999942779541,1.099998474121094,1.40000057220459s-.299999237060547,1.399999618530273-1.100000381469727,1.399999618530273-.700000762939453-.5-.700000762939453-.700000762939453v-1.700000762939453h0l.000001907348633-.099998474121094Z"/>
|
||||||
|
<path class="cls-3" d="M.600000023841858,20.299999237060547h-.600000023841858v.200000762939453c.100000001490116,0,.300000011920929,0,.300000011920929.200000762939453v2c0,.200000762939453-.099999994039536.200000762939453-.300000011920929.200000762939453h0v.099998474121094h1.200000047683716v-.100000381469727c-.100000023841858,0-.300000011920929,0-.300000011920929-.200000762939453v-2c0-.200000762939453.099999964237213-.200000762939453.300000011920929-.200000762939453h0v-.100000381469727h-.600000023841858v-.099998474121094Z"/>
|
||||||
|
<path class="cls-3" d="M3.900000095367432,20.299999237060547h-.5v.100000381469727c.099999904632568,0,.299999952316284,0,.299999952316284.299999237060547v1.399999618530273l-1.700000047683716-1.899999618530273h-.799999952316284v.100000381469727c.200000047683716,0,.299999952316284.100000381469727.299999952316284.299999237060547v1.600000381469727c0,.299999237060547,0,.5-.299999952316284.5h0v.100000381469727h1v-.100000381469727c-.299999952316284,0-.299999952316284-.100000381469727-.299999952316284-.399999618530273v-1.5l1.900000095367432,2.100000381469727h.199999809265137v-2.100000381469727c0-.5.199999809265137-.5.300000190734863-.5h0v-.100000381469727h-.5l.099999904632568.100000381469727Z"/>
|
||||||
|
<path class="cls-3" d="M7,20.200000762939453h0q0,.100000381469727-.199999809265137.100000381469727h-2s-.199999809265137,0-.199999809265137-.100000381469727h0v.599998474121094h.099999904632568q0-.299999237060547.300000190734863-.399999618530273h.599999904632568v2q0,.299999237060547-.300000190734863.299999237060547h0v.100000381469727h1.199999809265137v-.100000381469727c-.199999809265137,0-.300000190734863,0-.300000190734863-.299999237060547v-2h.599999904632568c.199999809265137,0,.300000190734863.200000762939453.300000190734863.399999618530273h.099999904632568v-.599998474121094h-.199999809265137Z"/>
|
||||||
|
<path class="cls-3" d="M9.300000190734863,22.399999618530273h0c-.100000381469727.5-.300000190734863.5-.800000190734863.5s-.399999618530273,0-.399999618530273-.200000762939453v-.899999618530273h.399999618530273c.199999809265137,0,.199999809265137.100000381469727.300000190734863.399999618530273h.100000381469727v-1h-.100000381469727c0,.200000762939453,0,.299999237060547-.300000190734863.299999237060547h-.399999618530273v-1h.5c.399999618530273,0,.399999618530273.200000762939453.399999618530273.399999618530273h.100000381469727v-.600000381469727h-1.900000095367432v.100000381469727c.099999904632568,0,.300000190734863,0,.300000190734863.200000762939453v2c0,.200000762939453-.099999904632568.200000762939453-.300000190734863.200000762939453h0v.100000381469727h2.000000476837158c0-.200000762939453,0-.399999618530273.100000381469727-.600000381469727h-.100000381469727l.09999942779541.100000381469727Z"/>
|
||||||
|
<path class="cls-3" d="M11.899999618530273,22.600000381469727l-.600000381469727-1c.300000190734863-.100000381469727.5-.299999237060547.5-.700000762939453,0-.5-.399999618530273-.700000762939453-.899999618530273-.700000762939453h-1.200000762939453v.100000381469727c.100000381469727,0,.199999809265137,0,.199999809265137.299999237060547v1.899999618530273c0,.100000381469727-.100000381469727.200000762939453-.199999809265137.200000762939453h0v.100000381469727h1.300000190734863v-.100000381469727c-.199999809265137,0-.300000190734863,0-.300000190734863-.299999237060547v-.799999237060547h.199999809265137c.199999809265137.399999618530273.5.799999237060547.800000190734863,1.200000762939453h.799999237060547v-.100000381469727q-.199999809265137,0-.399999618530273-.200000762939453h0l-.19999885559082.100000381469727ZM10.600000381469727,21.600000381469727h-.199999809265137v-1.100000381469727h.199999809265137c.300000190734863,0,.5.200000762939453.5.5s-.199999809265137.600000381469727-.600000381469727.600000381469727h.100000381469727Z"/>
|
||||||
|
<path class="cls-3" d="M15.399999618530273,20.5h0v-.100000381469727h-1c0,.100000381469727.100000381469727.100000381469727.100000381469727.100000381469727.100000381469727,0,.300000190734863,0,.300000190734863.299999237060547v1.399999618530273l-1.699999809265137-1.899999618530273h-.799999237060547v.100000381469727c.199999809265137,0,.300000190734863.100000381469727.300000190734863.299999237060547v1.600000381469727c0,.299999237060547,0,.5-.300000190734863.5h0v.100000381469727h1v-.100000381469727c-.300000190734863,0-.300000190734863-.100000381469727-.300000190734863-.399999618530273v-1.5l1.899999618530273,2.100000381469727h.199999809265137v-2.100000381469727c0-.5.199999809265137-.5.300000190734863-.5h0l-.000000953674316.100000381469727Z"/>
|
||||||
|
<path class="cls-3" d="M17.799999237060547,22.700000762939453c0-.100000381469727,0-.200000762939453-.100000381469727-.399999618530273l-.700000762939453-2v-.100000381469727h0s-.200000762939453.100000381469727-.399999618530273.200000762939453c0,.100000381469727-.100000381469727.299999237060547-.100000381469727.5l-.600000381469727,1.799999237060547c0,.100000381469727-.199999809265137.200000762939453-.300000190734863.200000762939453h0v.100000381469727h.899998664855957v-.100000381469727c-.100000381469727,0-.299999237060547,0-.299999237060547-.100000381469727v-.69999885559082h1v.399999618530273c.200000762939453.100000381469727.200000762939453.200000762939453.200000762939453.299999237060547h-.200000762939453v.100000381469727h1.100000381469727v-.100000381469727c-.100000381469727,0-.200000762939453,0-.200000762939453-.100000381469727h-.299997329711914ZM16.200000762939453,21.799999237060547l.299999237060547-1,.299999237060547,1h-.700000762939453.100002288818359Z"/>
|
||||||
|
<path class="cls-3" d="M20.299999237060547,20.200000762939453h0q0,.100000381469727-.200000762939453.100000381469727h-2c-.100000381469727,0-.200000762939453,0-.200000762939453-.100000381469727h-.100000381469727v.599998474121094h.100000381469727q0-.299999237060547.299999237060547-.399999618530273h.600000381469727v2q0,.299999237060547-.299999237060547.299999237060547h0v.100000381469727h1.200000762939453v-.100000381469727c-.200000762939453,0-.299999237060547,0-.299999237060547-.299999237060547v-2h.600000381469727c.200000762939453,0,.299999237060547.200000762939453.299999237060547.399999618530273h.100000381469727v-.599998474121094h-.100000381469727Z"/>
|
||||||
|
<path class="cls-3" d="M21.100000381469727,20.299999237060547h-.600000381469727v.100000381469727c.100000381469727,0,.299999237060547,0,.299999237060547.200000762939453v2c0,.200000762939453-.100000381469727.200000762939453-.299999237060547.200000762939453h0v.100000381469727h1.200000762939453v-.100000381469727c-.100000381469727,0-.299999237060547,0-.299999237060547-.200000762939453v-2c0-.200000762939453.100000381469727-.200000762939453.299999237060547-.200000762939453h0v-.100000381469727h-.600000381469727Z"/>
|
||||||
|
<path class="cls-3" d="M23.200000762939453,20.299999237060547c-.799999237060547,0-1.399999618530273.600000381469727-1.399999618530273,1.399999618530273s.600000381469727,1.399999618530273,1.399999618530273,1.399999618530273,1.5-.600000381469727,1.5-1.5c0-.799999237060547-.700000762939453-1.299999237060547-1.5-1.299999237060547h0ZM23.299999237060547,22.899999618530273c-.600000381469727,0-.899999618530273-.600000381469727-.899999618530273-1.299999237060547s.200000762939453-1.100000381469727.899999618530273-1.100000381469727.899999618530273.700000762939453.899999618530273,1.200000762939453-.100000381469727,1.200000762939453-.899999618530273,1.200000762939453v-.000001907348633Z"/>
|
||||||
|
<path class="cls-3" d="M27.799999237060547,20.5h0v-.100000381469727h-1c0,.100000381469727.100000381469727.100000381469727.100000381469727.100000381469727.100000381469727,0,.299999237060547,0,.299999237060547.299999237060547v1.399999618530273l-1.700000762939453-1.899999618530273h-.799999237060547v.100000381469727c.200000762939453,0,.299999237060547.100000381469727.299999237060547.299999237060547v1.600000381469727c0,.299999237060547,0,.5-.299999237060547.5h0v.100000381469727h1v-.100000381469727c-.299999237060547,0-.299999237060547-.100000381469727-.299999237060547-.399999618530273v-1.5l1.899999618530273,2.100000381469727h.200000762939453v-2.100000381469727c0-.5.200000762939453-.5.299999237060547-.5h0v.100000381469727Z"/>
|
||||||
|
<path class="cls-3" d="M30.200000762939453,22.700000762939453c0-.100000381469727-.100000381469727-.200000762939453-.100000381469727-.399999618530273l-.700000762939453-2v-.100000381469727h0s-.200000762939453.100000381469727-.399999618530273.200000762939453c0,.100000381469727-.100000381469727.299999237060547-.100000381469727.5l-.600000381469727,1.799999237060547c0,.100000381469727-.200000762939453.200000762939453-.299999237060547.200000762939453h0v.100000381469727h.899999618530273v-.100000381469727c-.100000381469727,0-.299999237060547,0-.299999237060547-.100000381469727v-.69999885559082h1v.399999618530273c.200000762939453.100000381469727.200000762939453.200000762939453.200000762939453.299999237060547h-.200000762939453v.100000381469727h1.100000381469727v-.100000381469727c-.100000381469727,0-.200000762939453,0-.200000762939453-.100000381469727h-.299999237060547ZM28.700000762939453,21.799999237060547l.299999237060547-1,.299999237060547,1h-.700000762939453.100002288818359Z"/>
|
||||||
|
<path class="cls-3" d="M32.599998474121094,22.299999237060547h0c0,.100000381469727,0,.200000762939453-.099998474121094.299999237060547,0,0-.200000762939453.200000762939453-.299999237060547.200000762939453h-.5c-.100000381469727,0-.200000762939453,0-.200000762939453-.200000762939453v-2c0-.200000762939453.100000381469727-.200000762939453.200000762939453-.200000762939453h.100000381469727v-.100000381469727h-1.200000762939453v.100000381469727c.100000381469727,0,.299999237060547,0,.299999237060547.200000762939453v2c0,.200000762939453-.100000381469727.200000762939453-.299999237060547.200000762939453h0v.100000381469727h1.999998092651367c0-.200000762939453,0-.399999618530273.099998474121094-.700000762939453h-.099998474121094v.100000381469727Z"/>
|
||||||
|
<path class="cls-3" d="M32.700000762939453,20.200000762939453c-.200000762939453,0-.400001525878906.200000762939453-.400001525878906.399999618530273s.200000762939453.399999618530273.400001525878906.399999618530273.400001525878906-.200000762939453.400001525878906-.399999618530273-.200000762939453-.399999618530273-.400001525878906-.399999618530273ZM32.700000762939453,21c-.200000762939453,0-.299999237060547-.100000381469727-.299999237060547-.299999237060547s.099998474121094-.299999237060547.299999237060547-.299999237060547.299999237060547.100000381469727.299999237060547.299999237060547-.099998474121094.299999237060547-.299999237060547.299999237060547Z"/>
|
||||||
|
<path class="cls-3" d="M32.700000762939453,20.600000381469727v-.100000381469727q0-.100000381469727-.099998474121094-.100000381469727h-.200000762939453v.299999237060547h.200000762939453v-.100000381469727c0,.100000381469727.099998474121094.200000762939453.099998474121094.200000762939453h0v-.100000381469727h0v-.099998474121094ZM32.700000762939453,20.600000381469727h0v-.200000762939453h0v.100000381469727h0v.100000381469727Z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path class="cls-3" d="M8.920000076293945,6.800000190734863C8.920000076293945,3.230000019073486,11.810000419616699.349999994039536,15.369999885559082.349999994039536c3.560000419616699,0,6.449999809265137,2.890000015497208,6.449999809265137,6.44999971985817,0,3.559999942779541-2.889999389648438,6.450000286102295-6.449999809265137,6.450000286102295s-6.449999809265137-2.890000343322754-6.449999809265137-6.449999809265137"/>
|
||||||
|
<path class="cls-2" d="M15.380000114440918,13.359999656677246c-3.699999809265137.020000457763672-6.739999771118164-2.980000495910645-6.739999771118164-6.619999885559082,0-3.989999771118164,3.039999961853027-6.739999771118164,6.739999771118164-6.739999771118164h1.730000495910645c3.649999618530273,0,6.989999771118164,2.75,6.989999771118164,6.739999771118164,0,3.640000343322754-3.329999923706055,6.619999885559082-6.989999771118164,6.619999885559082h-1.730000495910645ZM15.40000057220459.549999237060547c-3.380000114440918,0-6.109999656677246,2.740000009536743-6.109999656677246,6.119999885559082,0,3.380000114440918,2.739999771118164,6.109999656677246,6.110000610351562,6.109999656677246,3.380001068115234,0,6.119998931884766-2.739999771118164,6.119998931884766-6.110000133514404,0-3.380000114440918-2.739999771118164-6.110000133514404-6.119999885559082-6.119999885559082M14.010000228881836,10.279998779296875V3.049999952316284c-1.449999809265137.559999942779541-2.479999542236328,1.970000028610229-2.489999771118164,3.620000123977661,0,1.649999618530273,1.029999732971191,3.059999465942383,2.489999771118164,3.619999885559082M19.280000686645508,6.670000076293945c0-1.650000095367432-1.039999008178711-3.059999942779541-2.489999771118164-3.619999885559082v7.239999771118164c1.450000762939453-.560000419616699,2.489999771118164-1.970000267028809,2.489999771118164-3.619999885559082"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 24 KiB |
@ -1,819 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 27.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
|
||||||
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
|
|
||||||
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
|
|
||||||
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
|
|
||||||
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
|
|
||||||
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
|
|
||||||
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
|
|
||||||
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
|
|
||||||
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
|
|
||||||
]>
|
|
||||||
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 34 23.7"
|
|
||||||
style="enable-background:new 0 0 34 23.7;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:none;}
|
|
||||||
.st1{fill:#FFFFFF;}
|
|
||||||
.st2{fill:#0069AA;}
|
|
||||||
</style>
|
|
||||||
<switch>
|
|
||||||
<foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
|
|
||||||
<i:aipgfRef xlink:href="#adobe_illustrator_pgf">
|
|
||||||
</i:aipgfRef>
|
|
||||||
</foreignObject>
|
|
||||||
<g i:extraneous="self">
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M11.1,20.8c-0.1,0-0.2,0-0.2,0v1.1H11c0.4,0,0.6-0.1,0.6-0.6C11.6,21,11.4,20.8,11.1,20.8z"/>
|
|
||||||
<polygon class="st0" points="16.6,22.1 17.3,22.1 17,21.1 "/>
|
|
||||||
<path class="st0" d="M12.7,16.7c0-0.4-0.2-0.6-0.6-0.6c-0.4,0-0.7,0.3-0.8,0.8h1.2C12.7,16.9,12.7,16.8,12.7,16.7z"/>
|
|
||||||
<path class="st0" d="M2.5,18.9c1.5,0,2-1.1,2-2.2c0-1.3-0.8-2.3-2.2-2.3c-0.3,0-0.4,0-0.5,0v3.8C1.8,18.8,2.1,18.9,2.5,18.9z"/>
|
|
||||||
<path class="st0" d="M23.6,20.7c-0.7,0-0.8,0.6-0.8,1.1c0,0.7,0.3,1.3,0.9,1.3c0.7,0,0.9-0.6,0.9-1.2
|
|
||||||
C24.5,21.4,24.2,20.7,23.6,20.7z"/>
|
|
||||||
<path class="st0" d="M31.3,19c0.7,0,1.1-0.7,1.1-1.4c0-0.8-0.6-1.4-1.1-1.4c-0.3,0-0.5,0.2-0.7,0.3v1.7
|
|
||||||
C30.6,18.6,30.9,19,31.3,19z"/>
|
|
||||||
<path class="st0" d="M33.1,20.7L33.1,20.7l0,0.2h0C33.1,20.9,33.2,20.9,33.1,20.7C33.2,20.7,33.1,20.7,33.1,20.7z"/>
|
|
||||||
<polygon class="st0" points="29,22.1 29.7,22.1 29.4,21.1 "/>
|
|
||||||
<path class="st0" d="M33.1,20.6c-0.2,0-0.3,0.2-0.3,0.3c0,0.2,0.1,0.3,0.3,0.3c0.2,0,0.3-0.2,0.3-0.3
|
|
||||||
C33.4,20.7,33.3,20.6,33.1,20.6z M33.3,21.1L33.3,21.1c-0.1,0-0.1-0.1-0.2-0.2h0v0.1c0,0,0,0,0.1,0v0h-0.2v0c0,0,0.1,0,0.1,0
|
|
||||||
v-0.3c0,0,0-0.1-0.1-0.1v0h0.2c0.1,0,0.1,0,0.1,0.1c0,0.1,0,0.1-0.1,0.1l0.1,0.1C33.2,21,33.3,21.1,33.3,21.1L33.3,21.1z"/>
|
|
||||||
<path class="st1" d="M2.4,19.1c2.5,0,2.9-1.7,2.9-2.4c0-1.2-1-2.4-2.8-2.4c-0.5,0-0.9,0-1.2,0c-0.3,0-0.6,0-0.8,0v0.2
|
|
||||||
c0.3,0,0.6,0,0.6,0.6v3.4c0,0.5-0.2,0.5-0.6,0.5v0.2c0.3,0,0.6,0,0.9,0C1.7,19.1,2,19.1,2.4,19.1z M1.8,14.4c0.1,0,0.3,0,0.5,0
|
|
||||||
c1.4,0,2.2,0.9,2.2,2.3c0,1-0.5,2.2-2,2.2c-0.3,0-0.7-0.1-0.7-0.6V14.4z"/>
|
|
||||||
<path class="st1" d="M6.3,14.8c0.2,0,0.3-0.2,0.3-0.3c0-0.2-0.2-0.3-0.3-0.3c-0.2,0-0.3,0.2-0.3,0.3C5.9,14.6,6.1,14.8,6.3,14.8
|
|
||||||
z"/>
|
|
||||||
<path class="st1" d="M7,19.1v-0.2H6.9c-0.2,0-0.3,0-0.3-0.2V16c0-0.1,0-0.1,0-0.1c0,0-0.1,0-0.1,0c0,0-0.4,0.2-0.7,0.3v0.1
|
|
||||||
C5.9,16.4,6,16.5,6,16.8v1.9c0,0.2-0.1,0.2-0.3,0.2H5.5v0.2c0.3,0,0.5,0,0.8,0S6.8,19.1,7,19.1z"/>
|
|
||||||
<path class="st1" d="M10.7,18.9h-0.1c-0.2,0-0.3,0-0.3-0.2v-1.8c0-0.5-0.2-1-0.8-1c-0.5,0-0.8,0.2-1.2,0.5v-0.5
|
|
||||||
c0-0.1,0-0.1,0-0.1c-0.3,0.1-0.6,0.2-0.9,0.3v0.1c0.3,0.1,0.4,0.2,0.4,0.5v1.9c0,0.2-0.1,0.2-0.3,0.2H7.2v0.2c0.3,0,0.5,0,0.8,0
|
|
||||||
c0.3,0,0.5,0,0.7,0v-0.2H8.6c-0.2,0-0.4,0-0.4-0.2v-2.1c0.2-0.2,0.6-0.3,0.8-0.3c0.4,0,0.6,0.2,0.6,0.6v1.8
|
|
||||||
c0,0.2-0.1,0.2-0.3,0.2H9.2v0.2c0.3,0,0.5,0,0.8,0c0.3,0,0.5,0,0.7,0V18.9z"/>
|
|
||||||
<path class="st1" d="M12,19.2c0.6,0,1-0.4,1.3-0.8l-0.1-0.1c-0.3,0.3-0.6,0.5-0.9,0.5c-0.6,0-1-0.5-1-1.2c0-0.2,0-0.3,0-0.4h2
|
|
||||||
l0.1,0c0,0,0-0.1,0-0.1c0-0.7-0.6-1.1-1.2-1.1c-0.5,0-1.4,0.4-1.4,1.8C10.7,18.1,10.9,19.2,12,19.2z M12.1,16.1
|
|
||||||
c0.4,0,0.6,0.3,0.6,0.6c0,0.1,0,0.2-0.2,0.2h-1.2C11.4,16.4,11.7,16.1,12.1,16.1z"/>
|
|
||||||
<path class="st1" d="M15.3,19.1v-0.2h-0.4c-0.2,0-0.3,0-0.3-0.2V17c0-0.4,0.4-0.6,0.5-0.6c0.2,0,0.2,0.2,0.5,0.2
|
|
||||||
c0.2,0,0.3-0.2,0.3-0.4c0-0.3-0.2-0.4-0.4-0.4c-0.4,0-0.7,0.4-0.9,0.7h0V16c0-0.1,0-0.1-0.1-0.1c-0.1,0-0.3,0.2-0.9,0.4v0.1
|
|
||||||
c0.1,0.1,0.4,0.1,0.4,0.3v2c0,0.2-0.1,0.2-0.3,0.2h-0.2v0.2c0.3,0,0.5,0,0.8,0C14.6,19.1,14.9,19.1,15.3,19.1z"/>
|
|
||||||
<path class="st1" d="M17,19c-0.5,0-0.8-0.4-0.9-0.9l-0.1,0l0.1,0.8c0.2,0.1,0.6,0.2,0.9,0.2c0.8,0,1.2-0.5,1.2-1
|
|
||||||
c0-1.1-1.6-0.8-1.6-1.7c0-0.3,0.3-0.5,0.5-0.5c0.4,0,0.7,0.3,0.8,0.7H18l0-0.7c-0.3-0.1-0.6-0.2-0.8-0.2c-0.8,0-1.1,0.5-1.1,0.9
|
|
||||||
c0,1.1,1.5,0.9,1.5,1.7C17.6,18.7,17.4,19,17,19z"/>
|
|
||||||
<path class="st1" d="M24.3,18.8l0.2-1l-0.2,0c-0.1,0.7-0.7,1.2-1.4,1.2c-1.1,0-2.1-1-2.1-2.4c0-1.7,1.2-2.2,2-2.2
|
|
||||||
c0.8,0,1.4,0.3,1.5,1.1h0.2l-0.1-1c-0.5-0.2-1.1-0.4-1.7-0.4c-1.4,0-2.7,1-2.7,2.5c0,1.6,1,2.6,2.7,2.6
|
|
||||||
C23.2,19.2,24,19,24.3,18.8z"/>
|
|
||||||
<path class="st1" d="M26.2,19.1v-0.2h-0.1c-0.2,0-0.4,0-0.4-0.2v-4.8c0-0.1,0-0.1-0.1-0.1c0,0-0.1,0-0.2,0.1
|
|
||||||
c-0.1,0.1-0.4,0.2-0.7,0.3v0.1c0.3,0.1,0.4,0.1,0.4,0.5v3.9c0,0.2-0.1,0.2-0.3,0.2h-0.1v0.2c0.3,0,0.5,0,0.8,0
|
|
||||||
C25.7,19.1,26,19.1,26.2,19.1z"/>
|
|
||||||
<path class="st1" d="M26.6,16.6v1.8c0,0.6,0.4,0.8,0.8,0.8c0.5,0,0.8-0.2,1.2-0.6v0.6l0,0c0.1,0,0.7-0.2,1-0.2v-0.1
|
|
||||||
c-0.1,0-0.2,0-0.3,0c-0.1,0-0.2,0-0.2-0.1v-2.6c0-0.1,0-0.1-0.1-0.1c-0.1,0-0.5,0.1-1.1,0.1v0.1c0.3,0.1,0.6,0.1,0.6,0.3v1.9
|
|
||||||
c-0.3,0.2-0.6,0.4-0.8,0.4c-0.6,0-0.6-0.6-0.6-0.8v-1.8c0-0.2,0-0.2-0.1-0.2c-0.1,0-0.6,0-0.9,0v0.1
|
|
||||||
C26.6,16.2,26.6,16.4,26.6,16.6z"/>
|
|
||||||
<path class="st1" d="M30.1,14.8v3c0,0.4,0,0.8-0.1,1.2l0.1,0.1l0.2-0.2c0.2,0.1,0.5,0.2,1,0.2c1,0,1.7-0.9,1.7-1.8
|
|
||||||
c0-0.8-0.5-1.5-1.3-1.5c-0.4,0-0.8,0.3-1,0.5v-2.6c0-0.1,0-0.1-0.1-0.1c0,0-0.1,0-0.2,0.1c-0.1,0.1-0.4,0.2-0.7,0.3v0.1
|
|
||||||
C29.9,14.3,30.1,14.3,30.1,14.8z M30.6,16.6c0.2-0.2,0.4-0.3,0.7-0.3c0.5,0,1.1,0.6,1.1,1.4c0,0.6-0.3,1.4-1.1,1.4
|
|
||||||
c-0.5,0-0.7-0.4-0.7-0.7V16.6z"/>
|
|
||||||
<path class="st1" d="M1,20.6c-0.2,0-0.4,0-0.6,0h0v0.1v0h0.1c0.1,0,0.3,0,0.3,0.2v2c0,0.2-0.1,0.2-0.3,0.2H0.4h0v0v0.1v0h0
|
|
||||||
c0.1,0,0.4,0,0.6,0c0.2,0,0.4,0,0.6,0h0v-0.1v0H1.5c-0.1,0-0.3,0-0.3-0.2v-2c0-0.2,0.1-0.2,0.3-0.2h0.1h0v-0.1v0h0
|
|
||||||
C1.4,20.6,1.2,20.6,1,20.6z"/>
|
|
||||||
<path class="st1" d="M4.3,20.6c-0.2,0-0.4,0-0.5,0h0v0.1v0h0.1c0.1,0,0.3,0,0.3,0.3v1.4l-1.7-1.9c-0.1,0-0.2,0-0.4,0
|
|
||||||
c-0.1,0-0.3,0-0.4,0h0v0.1v0h0.1c0.2,0,0.3,0.1,0.3,0.3v1.6c0,0.3-0.1,0.5-0.3,0.5H1.7h0v0.1v0h0c0.2,0,0.3,0,0.5,0
|
|
||||||
c0.2,0,0.3,0,0.5,0h0v-0.1v0H2.7c-0.3,0-0.3-0.1-0.3-0.4v-1.5l1.9,2.2l0.2,0h0l0,0c0-0.1,0-0.2,0-0.4v-1.7
|
|
||||||
c0-0.4,0.2-0.5,0.3-0.5h0.1h0v-0.1v0h0C4.6,20.6,4.5,20.6,4.3,20.6z"/>
|
|
||||||
<path class="st1" d="M7.4,20.5L7.4,20.5c0,0.1-0.1,0.1-0.2,0.1h-2h0c-0.1,0-0.2,0-0.2-0.1l0,0H5h0v0c0,0.1,0,0.2,0,0.3
|
|
||||||
c0,0.1,0,0.2,0,0.3l0,0H5h0l0,0c0.1-0.3,0.1-0.3,0.3-0.3H6v2c0,0.3-0.1,0.3-0.3,0.3H5.6h0v0.1v0h0c0.2,0,0.4,0,0.6,0
|
|
||||||
c0.2,0,0.5,0,0.6,0h0v-0.1v0H6.8c-0.2,0-0.3,0-0.3-0.3v-2h0.6c0.2,0,0.3,0.2,0.3,0.4l0,0l0.1,0l0,0v0c0-0.1,0-0.2,0-0.3
|
|
||||||
c0-0.1,0-0.2,0-0.3l0,0L7.4,20.5L7.4,20.5z"/>
|
|
||||||
<path class="st1" d="M9.7,22.6L9.7,22.6c-0.1,0.4-0.3,0.5-0.8,0.5c-0.2,0-0.4,0-0.4-0.2V22l0.4,0c0.3,0,0.3,0.1,0.3,0.4l0,0
|
|
||||||
l0.1,0l0,0v0c0-0.1,0-0.3,0-0.4c0-0.1,0-0.3,0-0.4v0H9.2h0l0,0c0,0.2-0.1,0.3-0.3,0.3H8.5v-1H9c0.4,0,0.4,0.2,0.4,0.4l0,0l0.1,0
|
|
||||||
l0,0v0c0-0.1,0-0.3,0-0.4c0-0.1,0-0.1,0-0.2v0h0c-0.3,0-0.7,0-1,0c-0.3,0-0.7,0-0.9,0h0v0.1v0h0.1c0.1,0,0.3,0,0.3,0.2v2
|
|
||||||
c0,0.2-0.1,0.2-0.3,0.2H7.7h0v0v0.1v0h0c0.2,0,0.7,0,1,0c0.3,0,0.8,0,1,0h0l0,0c0-0.2,0.1-0.4,0.1-0.6l0,0L9.7,22.6L9.7,22.6z"
|
|
||||||
/>
|
|
||||||
<path class="st1" d="M12.3,22.9l-0.6-1c0.3-0.1,0.5-0.3,0.5-0.7c0-0.6-0.4-0.7-0.9-0.7c-0.2,0-0.4,0-0.6,0c-0.2,0-0.5,0-0.6,0h0
|
|
||||||
v0.1v0h0.1c0.1,0,0.3,0,0.3,0.3v1.9c0,0.1-0.1,0.2-0.3,0.2H10h0v0.1v0h0c0.2,0,0.4,0,0.6,0c0.2,0,0.4,0,0.7,0h0v-0.1v0h-0.1
|
|
||||||
c-0.2,0-0.3,0-0.3-0.3V22h0.2c0.2,0.4,0.5,0.8,0.8,1.2c0.1,0,0.3,0,0.4,0c0.1,0,0.2,0,0.4,0h0v-0.1v0l0,0
|
|
||||||
C12.4,23.1,12.4,23.1,12.3,22.9z M11,21.9h-0.2v-1.1c0,0,0.1,0,0.2,0c0.3,0,0.5,0.2,0.5,0.5C11.6,21.7,11.4,21.9,11,21.9z"/>
|
|
||||||
<path class="st1" d="M15.8,20.7v-0.1v0h0c-0.2,0-0.3,0-0.5,0c-0.2,0-0.4,0-0.5,0h0v0.1v0h0.1c0.1,0,0.3,0,0.3,0.3v1.4l-1.7-1.9
|
|
||||||
c-0.1,0-0.2,0-0.3,0c-0.1,0-0.3,0-0.4,0h0v0.1v0h0.1c0.2,0,0.3,0.1,0.3,0.3v1.6c0,0.3-0.1,0.5-0.3,0.5h-0.1h0v0.1v0h0
|
|
||||||
c0.2,0,0.3,0,0.5,0c0.2,0,0.3,0,0.5,0h0v-0.1v0h-0.1c-0.3,0-0.3-0.1-0.3-0.4v-1.5l1.9,2.2l0.2,0h0l0,0c0-0.1,0-0.2,0-0.4v-1.7
|
|
||||||
C15.4,20.8,15.6,20.7,15.8,20.7L15.8,20.7L15.8,20.7z"/>
|
|
||||||
<path class="st1" d="M18.2,23c0-0.1-0.1-0.3-0.1-0.4l-0.7-2c0,0,0-0.1,0-0.1c0,0,0,0,0,0c0,0,0,0,0,0c-0.1,0-0.2,0.1-0.3,0.2
|
|
||||||
c0,0.2-0.1,0.3-0.2,0.5l-0.6,1.7c-0.1,0.2-0.2,0.2-0.3,0.2h0h0v0.1v0l0,0c0.1,0,0.3,0,0.4,0c0.2,0,0.3,0,0.5,0l0,0v-0.1v0h-0.1
|
|
||||||
c-0.1,0-0.3,0-0.3-0.1c0-0.1,0-0.2,0.1-0.3l0.1-0.4h0.8l0.1,0.4c0,0.1,0.1,0.2,0.1,0.3c0,0.1-0.1,0.1-0.2,0.1h0h0v0.1v0l0,0
|
|
||||||
c0.2,0,0.4,0,0.6,0c0.2,0,0.4,0,0.5,0l0,0v-0.1v0h0C18.3,23.1,18.2,23.1,18.2,23z M16.6,22.1l0.3-1l0.3,1H16.6z"/>
|
|
||||||
<path class="st1" d="M20.7,20.5L20.7,20.5c0,0.1-0.1,0.1-0.2,0.1h-2h0c-0.1,0-0.2,0-0.2-0.1l0,0h-0.1h0v0c0,0.1,0,0.2,0,0.3
|
|
||||||
c0,0.1,0,0.2,0,0.3l0,0h0.1h0l0,0c0.1-0.3,0.1-0.3,0.3-0.3h0.6v2c0,0.3-0.1,0.3-0.3,0.3h-0.1h0v0.1v0h0c0.2,0,0.4,0,0.6,0
|
|
||||||
c0.2,0,0.5,0,0.6,0h0v-0.1v0H20c-0.2,0-0.3,0-0.3-0.3v-2h0.6c0.2,0,0.3,0.2,0.3,0.4v0l0.1,0l0,0v0c0-0.1,0-0.2,0-0.3
|
|
||||||
c0-0.1,0-0.2,0-0.3l0,0L20.7,20.5L20.7,20.5z"/>
|
|
||||||
<path class="st1" d="M21.5,20.6c-0.2,0-0.4,0-0.6,0h0v0.1v0H21c0.1,0,0.3,0,0.3,0.2v2c0,0.2-0.1,0.2-0.3,0.2h-0.1h0v0v0.1v0h0
|
|
||||||
c0.1,0,0.4,0,0.6,0c0.2,0,0.4,0,0.6,0h0v-0.1v0H22c-0.1,0-0.3,0-0.3-0.2v-2c0-0.2,0.1-0.2,0.3-0.2h0.1h0v-0.1v0h0
|
|
||||||
C21.9,20.6,21.7,20.6,21.5,20.6z"/>
|
|
||||||
<path class="st1" d="M23.6,20.5c-0.8,0-1.4,0.6-1.4,1.4c0,0.8,0.6,1.4,1.4,1.4c0.8,0,1.5-0.6,1.5-1.5
|
|
||||||
C25.1,21,24.4,20.5,23.6,20.5z M23.7,23.1c-0.6,0-0.9-0.6-0.9-1.3c0-0.5,0.2-1.1,0.8-1.1c0.6,0,0.9,0.7,0.9,1.2
|
|
||||||
C24.5,22.5,24.4,23.1,23.7,23.1z"/>
|
|
||||||
<path class="st1" d="M28.2,20.7v-0.1v0h0c-0.2,0-0.3,0-0.5,0c-0.2,0-0.4,0-0.5,0h0v0.1v0h0.1c0.1,0,0.3,0,0.3,0.3v1.4l-1.7-1.9
|
|
||||||
c-0.1,0-0.2,0-0.4,0c-0.1,0-0.3,0-0.4,0h0v0.1v0h0.1c0.2,0,0.3,0.1,0.3,0.3v1.6c0,0.3-0.1,0.5-0.3,0.5h-0.1h0v0.1v0h0
|
|
||||||
c0.2,0,0.3,0,0.5,0c0.2,0,0.3,0,0.5,0h0v-0.1v0h-0.1c-0.3,0-0.3-0.1-0.3-0.4v-1.5l1.9,2.2l0.2,0h0l0,0c0-0.1,0-0.2,0-0.4v-1.7
|
|
||||||
C27.8,20.8,28,20.7,28.2,20.7L28.2,20.7L28.2,20.7z"/>
|
|
||||||
<path class="st1" d="M30.6,23c0-0.1-0.1-0.3-0.1-0.4l-0.7-2c0,0,0-0.1,0-0.1c0,0,0,0,0,0c0,0,0,0,0,0c-0.1,0-0.2,0.1-0.3,0.2
|
|
||||||
c0,0.2-0.1,0.3-0.2,0.5l-0.6,1.7c-0.1,0.2-0.2,0.2-0.3,0.2h0h0v0.1v0l0,0c0.1,0,0.3,0,0.4,0c0.2,0,0.3,0,0.5,0l0,0v-0.1v0H29
|
|
||||||
c-0.1,0-0.3,0-0.3-0.1c0-0.1,0-0.2,0.1-0.3l0.1-0.4h0.8l0.1,0.4C30,22.9,30,23,30,23c0,0.1-0.1,0.1-0.2,0.1h0h0v0.1v0l0,0
|
|
||||||
c0.2,0,0.4,0,0.6,0c0.2,0,0.4,0,0.5,0l0,0v-0.1v0h0C30.7,23.1,30.6,23.1,30.6,23z M29,22.1l0.3-1l0.3,1H29z"/>
|
|
||||||
<path class="st1" d="M33,22.6L33,22.6c0,0.1-0.1,0.2-0.1,0.3c-0.1,0.1-0.2,0.2-0.4,0.2c-0.1,0-0.2,0-0.3,0c-0.1,0-0.1,0-0.2,0
|
|
||||||
c-0.1,0-0.2-0.1-0.2-0.2v-2c0-0.2,0.1-0.2,0.2-0.2h0.1h0v-0.1v0h0c-0.2,0-0.4,0-0.6,0c-0.2,0-0.4,0-0.6,0h0v0.1v0H31
|
|
||||||
c0.1,0,0.3,0,0.3,0.2v2c0,0.2-0.1,0.2-0.3,0.2H31h0v0.1v0h0c0.3,0,0.7,0,1,0c0.3,0,0.7,0,1,0h0l0,0c0-0.2,0.1-0.4,0.1-0.6l0,0
|
|
||||||
H33L33,22.6z"/>
|
|
||||||
<path class="st1" d="M33.1,20.5c-0.2,0-0.4,0.2-0.4,0.4c0,0.2,0.2,0.4,0.4,0.4c0.2,0,0.4-0.2,0.4-0.4
|
|
||||||
C33.5,20.7,33.3,20.5,33.1,20.5z M33.1,21.2c-0.2,0-0.3-0.2-0.3-0.3c0-0.2,0.1-0.3,0.3-0.3c0.2,0,0.3,0.2,0.3,0.3
|
|
||||||
C33.4,21.1,33.3,21.2,33.1,21.2z"/>
|
|
||||||
<path class="st1" d="M33.1,20.9c0.1,0,0.1-0.1,0.1-0.1c0-0.1-0.1-0.1-0.1-0.1h-0.2v0c0.1,0,0.1,0,0.1,0.1v0.3c0,0,0,0-0.1,0v0
|
|
||||||
h0.2v0c0,0-0.1,0-0.1,0v-0.1L33.1,20.9c0,0.1,0,0.2,0.1,0.2h0.1v0C33.3,21.1,33.2,21,33.1,20.9L33.1,20.9z M33.1,20.9L33.1,20.9
|
|
||||||
l0-0.2h0c0,0,0.1,0,0.1,0.1C33.2,20.9,33.1,20.9,33.1,20.9z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st1" d="M9.3,7.1c0-3.6,2.9-6.4,6.4-6.4s6.4,2.9,6.4,6.4s-2.9,6.4-6.4,6.4S9.3,10.6,9.3,7.1"/>
|
|
||||||
<path class="st2" d="M15.8,13.6c-3.7,0-6.7-3-6.7-6.6c0-4,3-6.7,6.7-6.7h1.7c3.7,0,7,2.8,7,6.7c0,3.6-3.3,6.6-7,6.6H15.8z
|
|
||||||
M15.8,0.8c-3.4,0-6.1,2.7-6.1,6.1c0,3.4,2.7,6.1,6.1,6.1c3.4,0,6.1-2.7,6.1-6.1C21.9,3.6,19.2,0.8,15.8,0.8 M14.4,10.5V3.3
|
|
||||||
c-1.5,0.6-2.5,2-2.5,3.6C11.9,8.6,13,10,14.4,10.5 M19.7,6.9c0-1.7-1-3.1-2.5-3.6v7.2C18.6,10,19.7,8.6,19.7,6.9"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</switch>
|
|
||||||
<i:aipgf id="adobe_illustrator_pgf" i:pgfEncoding="zstd/base64" i:pgfVersion="24">
|
|
||||||
<![CDATA[
|
|
||||||
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
|
|
||||||
]]>
|
|
||||||
<![CDATA[
|
|
||||||
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
|
|
||||||
]]>
|
|
||||||
<![CDATA[
|
|
||||||
VO3sNnSxORaNAEKrMvoyRiA3C6lYwzxsZzvkIpNZTBCPwBKONgQfwSM0qQwgqDy2PLVEFVlAQ1RJ
|
|
||||||
2CpLNjnblHQbVhBFAlYbsNs0DZGAbkvYCLQyE23Qbd2GMFGsqTDQbSFUVFceosAUiiDqwsKBGEm8
|
|
||||||
BEFrcUe3GUQau6Iq2JQWDyyCLaan4VpKjWv0kSrf64I2Bl7W7IWRpcESNfkA9Qx4PDXb+OAzEaZu
|
|
||||||
m2RQ6AOJcbCQILOpaLoEdBgQyYuPBh4LCFjoaIwUxINIWjQQMobSWL5NK20wM9HniUBpHB4QDiwM
|
|
||||||
kBGFT0AY1bUEnXq0saG/wnRsXNtria/pNpOmHGjOWRmxeLZHwWgIDFaWip1FLASnS0IG23oJOZrT
|
|
||||||
dK9ByAjdU+AL3Y1EgJHDjsq75YAZ+hyTTMzGPIwH5ghkLLmGAiAsxwwU9W4DHxC6TWaAwRLsSLcH
|
|
||||||
7rYZ54G77WHBuafMQkV8K/VAFEi8BBGQMPAaHl4RRMOh4CG6zYFhcskdTk5hE2XGKmYlX5aCr9Mq
|
|
||||||
lYJQdQlGCeljPBR4mcF7h0jCbmuJuk0MI7fbuo0A7TaXZNVtpnTsNk+3YWox0Ou2bnNsIJQGLp26
|
|
||||||
XiKgqxbAUXgaQtZo8TXgVnyN5SwFZoIxGZOKANqINYxAKhEQQHAyLXs+UDB48SsEn4mWQqicmkNW
|
|
||||||
OB8YI3ebaa68uzAPdoUzeTC/hRu53TYa8CyEk01GnQoaI8UWtgFRzKKEAHK6rdtGMU9A5TakKE2C
|
|
||||||
QK0YnNBtqAsCImQoTG4wSkPLmANLbGCzwTBgFp+AbgO7zTyBFbYBXzP0q9iFzbEwmErkBixBCgEO
|
|
||||||
E4czE1n5zK9wcOZCwngawhOxOZYPJf0qINIlIUO6tb3BNZ/5BAqC1KXbLgKcY6lwzrH8kKhh0l0U
|
|
||||||
U+ycVUYBkhFvRA6jD6KqBpWXLOBez9dple6IeGxBJyuwIMQorTTxs6OI7rb9yQ2IIL2klDRSjNa6
|
|
||||||
3G2nUaNUSX20shLLpMRMRXSIXEe3jVSj7dzTBXcbXsxcEMSZUDqwvBRgXgZVcNADGwKW3KEuiGhC
|
|
||||||
Oc9XAU9lEAcpStNtnYFPqTKWGj3m3eoZLItg1EACtNsMHI7YBTZmJpURaNJtlcojgiCZQhHEKVl5
|
|
||||||
iE8M9BCgxidBgGa0CEJA0YAQaHAEcakrD/EVCB4InjI0oMi9k1a31A/Fy7/i2Nxy5DD6ui1FfauL
|
|
||||||
AClkpRPQoVUqp5YqpROIVtpgtzHAAIqX+KBcDSYUVthtoMNtWYU1fSwoyJRZztMGP5QGgkIAPVzT
|
|
||||||
gPcTYWHFodaALzILR1cY5nJJjAaFyToYy2ehVS5MxMkwOIQHFhQmzBMGWmZSWSw46HWbTz0UKY4N
|
|
||||||
0Aehb2Bh8rGOz0DbqFVKzKgwYZ4oZowWxiAS0G0YxGnJp5NjVmimRqlyMjSwsGJWGDISAYcixbGV
|
|
||||||
8aB4joipw3Foal0E4wWAMKopBSsMVigMnJhGAwIdoQYtzEJjDiwgAVeBRcGJoDSqcqAVnqlRxXQb
|
|
||||||
6sUQUIGgVvjRAaluRJMYMvcsu9fHITe0qqEIVBKOGsni4QsdjOMh4MCS2hujaaiICi4lBrWeIsWx
|
|
||||||
ZWiDHshCaNnuNPBZb0GCwZATAQqorBKxz54GPhs2mN0rwVLI1IYoZkAjDq2/EDWSJXb+MQBt9Iph
|
|
||||||
KBuxSxjOFNxnf8kPlOaz3SaRrbrc+CyQu8CMr+9iBiUGeghbVx6CwaCUIEAS9kA4SLwEEblAHohQ
|
|
||||||
gyMIgrryHg4FD+FhoSIIjSY9RLdVHAoegqDxSRB4hImkskfMNryDbilAKO0KpAAsLbPZQnI3BJdY
|
|
||||||
pUw5hD7Ew2FXCCwLIwtHg0DJ3WZwFiTE2wA7EZKOJoFqPIbMfWCAuiTDMHIaAb5vfuvHfWPtP8hi
|
|
||||||
XnvnuH6c7+8f14+3Fa4fc7vbX7W3dtePLf9b2D+vH//9c/24b4w9qO+qtzDfurnsd8bV41873la1
|
|
||||||
49uzrZ3n36vOdctyv7Xv/LfmlWPsf924bvwzrhv73v2vGnfc+bfcV41v3xakNf/V/1s31pnrjL/1
|
|
||||||
9u6PMa8/Y4591Thjfbu9deP6udz1rhtz/uvPmNeNsfW8brytcre2142tvVn3ujG3u/4btD+2v/4t
|
|
||||||
3L1ujO/9deNub+WY47Dn67PHtmqcse69YpxvvVhfbnnd1t/aMa8e21stznhb6d0rxlrz+nGuGXNd
|
|
||||||
P+ex95z7mnHH9XMZY78tKPPdQ+6rxv56fqvGfpW19RXja7Gu3/9fL97X++q3lccW1+59r5vzvlrc
|
|
||||||
ffb1Yq3zvr9iXDOu+2b/6wbpX3fHXleNN5nFv+qNca4a46yx1rXfj/PGtu66K7/c7r5uvn/l+etc
|
|
||||||
e+V3Z+5z5Xdb1f4//z3Xfr3+vte+ref9a97vBsq6Y2urv1v4d/6V137x5h33Xvv1e3O8ve+29nsv
|
|
||||||
/phv/3vl+PbOtef81o73313nyiv//+/KtxWuO/N9q797+1773Va88vtt17xqnnWu/HZ//66b89hW
|
|
||||||
frfw6mt97vpWfje/ddufceX3+7srv5vs2tx71R/b2u/W2sJvva/6dr8997hqj/P/v+brLdcd8207
|
|
||||||
yOe8teYZlG3mvf+a88X6317z1xnbrC+v+ea/bee/d6/xrfpuq6u+2+p6z/XdVd/sd7768g7y94Zc
|
|
||||||
76qvttriXnXW+tqrdd3X68svr/tyG+vcvc6+7ot9t93fu+u+W1+N719pW/fFfmebf9U339otvvlz
|
|
||||||
7POu+ub9s/Wd5+6rvjx72c35b47rxqstbG2r/P/91d6Oed3byn6vu628a6517fzzaq+9Fd+s++ad
|
|
||||||
V3xrX22b7+2V13y5/5xXrjHvmP/LPQhjnLffGO98Nf79Vu6t5hvXe++um8v943qv37hrr7XHFd9f
|
|
||||||
tf791t33vv1/bX3WdXMbf4xrvluoc90153x/1VzW29qar+f3dssrvpus6mwrvq0NFNqbcbX3a8ux
|
|
||||||
//X//LPvuv4NBOIY17+F3OtdP2gLM//dV45/x5fv7nn92ypza7W29Vvsq//Y5o9r30D2cp+v7T7r
|
|
||||||
j/2ufgu597ZXn7mu/lp/cfXb6tfe9e2156sz5rr2DaQ3B9mLe84c5107aAuxzRj/yq3X1t+sscad
|
|
||||||
145r33/XvoH+xz5vof387tr55xzX3vmuXXPba9fb176F//J8L9ae++xBWmfftzB3nGvPuHrr9eW1
|
|
||||||
65t59V5v3X/120r7rr3FPttqr64dhD/uvnLsNa722o6tBvm/tedW417tx1trC7/Vn/fKtxXuuHJ8
|
|
||||||
vcW2cvw973VvINDeQmuz5nhfbr3Pvm7QFv7Mf+W349r79v3Xra++uXafdfd1b6Cfuc1bb+Hmu/at
|
|
||||||
L6+b2/1nzmvXPutf9++1651z5VuYf7/+Z54rz/tu7Wu3H19ducd668q3lf9eV47x9rXf/rfGu3K8
|
|
||||||
vb0exLvevfYtxNpzW/f92edd+edaY+995RvIW86zl3G75253t7b2u7W2Ve+ad1s57zj7b7fu+/66
|
|
||||||
+97Z28q3VeeX12+/tlpXrj/X2+p3fL+t3/LK7d/Wa135JtP32vyrx5UjQLbWBgo3GYazrW3V98a2
|
|
||||||
Yr0/r3dbaWs7z/Xi3jmvOvuqvfbV4u+r/t1vIJ7r3sL8Me/V447xz/V3W6/duf6dQVuI9bW92qs9
|
|
||||||
5tf/ardVv9jrjevFu36vd72/3m3V/+6b64o/93nXv3vHVW+r7ce5+m31va2d858r57ju++/fvupN
|
|
||||||
9vvOevOqPd78+lzxvQiQrdxA4eWZa423xzb3ivX1GPuKs9cVW1xz9jp7X3HWv+LLr635Y41rzndf
|
|
||||||
bXfHtmZ9O/YYY/9vtjVzu1/e+7U1a7x3/+Hvf/+Kr/0V5w2kcdbc8qy/rTnz/7Xu2W9ta/a+a7s7
|
|
||||||
B4Ub/9y79RV/jm2322LLNe7+grzWGH/Pb8a84o5t9ncrtxWu2e/cr645e9x/xzXnbeW/3RVvq96t
|
|
||||||
rRn7XnG+v+b+L7YWw90apNxA/etv/cX9Z59BHvPb68ebDHN+Na/X1o/DvO/Ft+Zse/5W+9x9xX/f
|
|
||||||
mvPueeebva05Y/v/9zr7ikE825rzJsvY1lwzv5xv7qvN/vp8f78gzfXdeGtd9xZqv7/Wt/Zq8+5b
|
|
||||||
c3s/tr7azDH+19abt9X/Xf+O681X285117VzPuvcO9b5buzrzd9+rT23nH9vK9d1c9lm/H+uOOe8
|
|
||||||
tbcV501WNeet1nfnXG/2Gf+L8cVV45wr3l133+vl/Na2f8s5xxnXa73dVev8sc9V423Vdf+7Wp59
|
|
||||||
37xmfLG//++acd9/74zr/X9rzr3Puev7a+9aX6yz7RZ377nuFWNb8/bX6l8x3mT9Wltz9jn/XTNe
|
|
||||||
4X151rd/q3/VoM65ztbrurdQ65tx97h+rvvP2O9efe764/q5jfnm/Vu7va/334v7tRVvq40tx9rm
|
|
||||||
iv/1+ub6Ofb8681r5rn6bWUxt7Vv76+tvGec9ddVX921/7/mTaa7vZb77qvmds/af287x9zristt
|
|
||||||
1b21v/Kc9eccdHneX1d8t3Bbe33lXN78ft5xvdfajvXNtXMeY3t5rvfefffmH+t9va34esxr5zK3
|
|
||||||
mvO9Lc5dV3wx1rn2vbX/lV/9v+cV663cQKCrrb+cV8ztnv/21nu8f+V3A2W+Ocbdaqw9rv1usuut
|
|
||||||
t5rXy218eeV3Qy1c3spt5b3ePfN9d965e+xzvdvyrTvvFfvN/99Wn1+Nd9YVe935/Xlv/H+9nM/f
|
|
||||||
3u77zd7vevu9+/9/+cVf//7z7p5rmzHPF9t67wayOOd9sd++3i3U/Pp7ed+dd+7v9tVebuOb9+c9
|
|
||||||
X875r5jbmNufrf3V3py73l7/au8m69Zmv/uvmPP+dp453vpuWy9q4bbdatto4e4GABNnNwtnN1S3
|
|
||||||
BaSnBWW5x0VxEw7TQUhPy4fqtoyFu1sJ4h6Xc2wqEGc5uznL7Y05jy/3+z3HAIggVplB3buBA0Al
|
|
||||||
BA6FQreVoQ12W7d13VbDvS3utg9XSQR7OG/w9MLQgObkr9vw/VIca7/6SSKf94m+8LNJoAqOI91m
|
|
||||||
I1+kgCLWTofDoJJfNRKJRFKPSLdd+3hUSbd1m/dwPL4v9hdZ7AULNQYSikmVEa9hgeJ4iI2GIsVJ
|
|
||||||
USjDBr2MQhtqyXTBkeqwud0WwSTEexcCGFkSwJC5MXOA3DhgG4vIZNJAzA0FTCQ4+fQdmJOhLEIv
|
|
||||||
A4s8Sii2hAlEgcbcFRRloQ14tMRSIafUQe8j2KD3TWabe2IcFK/bJAQb9CTVwSOADGwoHhvOIrd+
|
|
||||||
Nuh1wM/SRhVw1oWR+0mVNnI/jJCzwe7jKFSHza20v8gVzgY9WzJdMEOE4032Q++KdhtDlIB9MZMp
|
|
||||||
CppaqASzZZShYE+DkKEREAEwIAGzEgAgGDQaD0pG0wk1vQMUgAJBOihKTlAyNB6TiUPCSCgMB8RY
|
|
||||||
jMIojqIojMSYYgoyGwSkR/Kee3NPFKU5hZEjM/pEUy6JdOamZYAn2yq3jHGxdNF+9w==
|
|
||||||
]]>
|
|
||||||
<![CDATA[
|
|
||||||
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
|
|
||||||
]]>
|
|
||||||
<![CDATA[
|
|
||||||
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
|
|
||||||
]]>
|
|
||||||
<![CDATA[
|
|
||||||
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
|
|
||||||
]]>
|
|
||||||
<![CDATA[
|
|
||||||
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
|
|
||||||
]]>
|
|
||||||
<![CDATA[
|
|
||||||
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
|
|
||||||
]]>
|
|
||||||
<![CDATA[
|
|
||||||
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
|
|
||||||
]]>
|
|
||||||
<![CDATA[
|
|
||||||
uvP4yBXo0j25QJPwb5+Pzh6f8fOH0Wodi9ATsgv5XNZQa66AbTT1a7GFPN+zCvNIuBmPq1vtj6Mj
|
|
||||||
fjueOWcMhZ8I0AmiB3pmzCK3WXIzTr/qA5EyIJuQDj0hUAnfmqfoCUVGMS7muMg9L8GaT2NjYnqh
|
|
||||||
jeGDcuSfLzEM5P67Vfz/FPVYQ0o+mnC9B9YCWtcVX8rZGUCPgiGX0RwB4UqsOqcw8GKaYj4+cj1w
|
|
||||||
FOIwBHcFhe1Ak5tKeCxq2KM0BCi7Qa3ut4rrKcviKKirmjBfYQ9/eEnxnbrJpM+Ien5WoZIFgP8j
|
|
||||||
+410HTwBDjtSSkSz0LpYrVxJ5p+Eufx7G6vxsZp1wm21shXK6cRxCnLfWbYCpD6uM9miaUAYAaSq
|
|
||||||
nZAvJmbhgTI1ioIVwVo5kyXVSpkceZchOjb4I6Jy4ETW2w+vYpqBSa5T6JBnJV/i5kTloJOXT0eO
|
|
||||||
zzBg3UkNHuRBDfK3NKwD
|
|
||||||
]]>
|
|
||||||
</i:aipgf>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 62 KiB |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"images" : [
|
"images" : [
|
||||||
{
|
{
|
||||||
"filename" : "generic-inverted.svg",
|
"filename" : "generic_inverted.svg",
|
||||||
"idiom" : "universal"
|
"idiom" : "universal"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@ -1,10 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 24.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 32 20" style="enable-background:new 0 0 32 20;" xml:space="preserve">
|
|
||||||
<path stroke="#FFFFFF" d="M1,0.5h30c0.3,0,0.5,0.2,0.5,0.5v18c0,0.3-0.2,0.5-0.5,0.5H1c-0.3,0-0.5-0.2-0.5-0.5V1C0.5,0.7,0.7,0.5,1,0.5z"
|
|
||||||
/>
|
|
||||||
<rect x="4" y="4" fill="#FFFFFF" width="24" height="2"/>
|
|
||||||
<rect x="23" y="14" fill="#FFFFFF" width="2" height="2"/>
|
|
||||||
<rect x="26" y="14" fill="#FFFFFF" width="2" height="2"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 663 B |
20
VDS/SupportingFiles/Icons.xcassets/CreditCard/generic-inverted.imageset/generic_inverted.svg
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 34 22.4" style="enable-background:new 0 0 34 22.4;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:none;}
|
||||||
|
.st1{fill:#FFFFFF;}
|
||||||
|
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
|
||||||
|
</style>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M31.6,21.9H2.4c-1.1,0-1.9-0.9-1.9-2V2.5c0-1.1,0.9-2,1.9-2h29.1c1.1,0,1.9,0.9,1.9,2v17.4
|
||||||
|
C33.5,21,32.6,21.9,31.6,21.9z"/>
|
||||||
|
<path class="st1" d="M31.6,21.9v-0.5H2.4c-0.8,0-1.5-0.7-1.5-1.5V2.5C1,1.7,1.6,1,2.4,1l29.1,0C32.4,1,33,1.7,33,2.5v17.4
|
||||||
|
c0,0.8-0.7,1.5-1.5,1.5V21.9v0.5c1.3,0,2.4-1.1,2.4-2.5V2.5C34,1.1,32.9,0,31.6,0L2.4,0C1.1,0,0,1.1,0,2.5v17.4
|
||||||
|
c0,1.4,1.1,2.5,2.4,2.5h29.1V21.9z"/>
|
||||||
|
<rect x="4.4" y="4.4" class="st2" width="25.3" height="2"/>
|
||||||
|
<rect x="27.7" y="16.4" class="st2" width="1.9" height="2"/>
|
||||||
|
<rect x="24.8" y="16.4" class="st2" width="1.9" height="2"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
@ -1,17 +1,19 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 20">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 34 22.4" style="enable-background:new 0 0 34 22.4;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:none;}
|
||||||
|
.st1{fill-rule:evenodd;clip-rule:evenodd;}
|
||||||
|
</style>
|
||||||
<g>
|
<g>
|
||||||
<g>
|
<path class="st0" d="M31.6,21.9H2.4c-1.1,0-1.9-0.9-1.9-2V2.5c0-1.1,0.9-2,1.9-2h29.1c1.1,0,1.9,0.9,1.9,2v17.4
|
||||||
<path d="M30.5,20h-29C0.7,20,0,19.3,0,18.5v-17C0,0.7,0.7,0,1.5,0h29C31.3,0,32,0.7,32,1.5v17C32,19.3,31.3,20,30.5,20z M1.5,1
|
C33.5,21,32.6,21.9,31.6,21.9z"/>
|
||||||
C1.2,1,1,1.2,1,1.5v17C1,18.8,1.2,19,1.5,19h29c0.3,0,0.5-0.2,0.5-0.5v-17C31,1.2,30.8,1,30.5,1H1.5z"/>
|
<path d="M31.6,21.9v-0.5H2.4c-0.8,0-1.5-0.7-1.5-1.5V2.5C1,1.7,1.6,1,2.4,1l29.1,0C32.4,1,33,1.7,33,2.5v17.4
|
||||||
</g>
|
c0,0.8-0.7,1.5-1.5,1.5V21.9v0.5c1.3,0,2.4-1.1,2.4-2.5V2.5C34,1.1,32.9,0,31.6,0L2.4,0C1.1,0,0,1.1,0,2.5v17.4
|
||||||
<g>
|
c0,1.4,1.1,2.5,2.4,2.5h29.1V21.9z"/>
|
||||||
<rect x="4" y="4" fill-rule="evenodd" clip-rule="evenodd" width="24" height="2"/>
|
<rect x="4.4" y="4.4" class="st1" width="25.3" height="2"/>
|
||||||
</g>
|
<rect x="27.7" y="16.4" class="st1" width="1.9" height="2"/>
|
||||||
<g>
|
<rect x="24.8" y="16.4" class="st1" width="1.9" height="2"/>
|
||||||
<rect x="23" y="14" fill-rule="evenodd" clip-rule="evenodd" width="2" height="2"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<rect x="26" y="14" fill-rule="evenodd" clip-rule="evenodd" width="2" height="2"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 605 B After Width: | Height: | Size: 1.0 KiB |
15
VDS/SupportingFiles/Icons.xcassets/CreditCard/placeholder-Inverted.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "placeholder-Inverted.svg",
|
||||||
|
"idiom" : "universal"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
},
|
||||||
|
"properties" : {
|
||||||
|
"preserves-vector-representation" : true
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 34 22.4" style="enable-background:new 0 0 34 22.4;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#333333;}
|
||||||
|
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#333333;}
|
||||||
|
</style>
|
||||||
|
<g>
|
||||||
|
<path d="M31.6,21.9H2.4c-1.1,0-1.9-0.9-1.9-2V2.5c0-1.1,0.9-2,1.9-2h29.1c1.1,0,1.9,0.9,1.9,2v17.4C33.5,21,32.6,21.9,31.6,21.9z"
|
||||||
|
/>
|
||||||
|
<path class="st0" d="M31.6,21.9v-0.5H2.4c-0.8,0-1.5-0.7-1.5-1.5V2.5C1,1.7,1.6,1,2.4,1l29.1,0C32.4,1,33,1.7,33,2.5v17.4
|
||||||
|
c0,0.8-0.7,1.5-1.5,1.5V21.9v0.5c1.3,0,2.4-1.1,2.4-2.5V2.5C34,1.1,32.9,0,31.6,0L2.4,0C1.1,0,0,1.1,0,2.5v17.4
|
||||||
|
c0,1.4,1.1,2.5,2.4,2.5h29.1V21.9z"/>
|
||||||
|
<rect x="4.4" y="4.4" class="st1" width="25.3" height="2"/>
|
||||||
|
<rect x="27.7" y="16.4" class="st1" width="1.9" height="2"/>
|
||||||
|
<rect x="24.8" y="16.4" class="st1" width="1.9" height="2"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
15
VDS/SupportingFiles/Icons.xcassets/CreditCard/placeholder.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "placeholder.svg",
|
||||||
|
"idiom" : "universal"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
},
|
||||||
|
"properties" : {
|
||||||
|
"preserves-vector-representation" : true
|
||||||
|
}
|
||||||
|
}
|
||||||
20
VDS/SupportingFiles/Icons.xcassets/CreditCard/placeholder.imageset/placeholder.svg
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 34 22.4" style="enable-background:new 0 0 34 22.4;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#FFFFFF;}
|
||||||
|
.st1{fill:#DBDADA;}
|
||||||
|
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#DBDADA;}
|
||||||
|
</style>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M31.6,21.9H2.4c-1.1,0-1.9-0.9-1.9-2V2.5c0-1.1,0.9-2,1.9-2h29.1c1.1,0,1.9,0.9,1.9,2v17.4
|
||||||
|
C33.5,21,32.6,21.9,31.6,21.9z"/>
|
||||||
|
<path class="st1" d="M31.6,21.9v-0.5H2.4c-0.8,0-1.5-0.7-1.5-1.5V2.5C1,1.7,1.6,1,2.4,1l29.1,0C32.4,1,33,1.7,33,2.5v17.4
|
||||||
|
c0,0.8-0.7,1.5-1.5,1.5V21.9v0.5c1.3,0,2.4-1.1,2.4-2.5V2.5C34,1.1,32.9,0,31.6,0L2.4,0C1.1,0,0,1.1,0,2.5v17.4
|
||||||
|
c0,1.4,1.1,2.5,2.4,2.5h29.1V21.9z"/>
|
||||||
|
<rect x="4.4" y="4.4" class="st2" width="25.3" height="2"/>
|
||||||
|
<rect x="27.7" y="16.4" class="st2" width="1.9" height="2"/>
|
||||||
|
<rect x="24.8" y="16.4" class="st2" width="1.9" height="2"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
@ -1,3 +1,20 @@
|
|||||||
|
1.0.66
|
||||||
|
----------------
|
||||||
|
- ONEAPP-6325 - Table - Development finished
|
||||||
|
- CXTDT-565087 - InputField - Text - OnDark colors
|
||||||
|
- CXTDT-565112 - InputField - Credit Card icons
|
||||||
|
- CXTDT-565117 - InputField - Overflow not clipped
|
||||||
|
- CXTDT-565105 - InputField - Date - Typeover text not working
|
||||||
|
- CXTDT-565115 - InputField - CreditCard - China UnionPay does not allow longer numbers
|
||||||
|
- CXTDT-560823 – TextArea – Accessibility Labels/Error/ReadyOnly/Disabled
|
||||||
|
- CXTDT-553663 - DropdownSelect – Accessibility
|
||||||
|
- CXTDT-544662 - Breadcrumbs - Text Wrapping
|
||||||
|
- CXTDT-568398 - Calendar - Saturday missing (on smaller screen size devices)
|
||||||
|
- CXTDT-568402 - Calendar - Extra row (on smaller screen size devices)
|
||||||
|
- CXTDT-568409 - Calendar - Width control missing
|
||||||
|
- CXTDT-568419 - Calendar - When hideContainerBorder=true, corner radius disappears
|
||||||
|
- CXTDT-568413 - Calendar - Missing option for Transparent Background
|
||||||
|
|
||||||
1.0.65
|
1.0.65
|
||||||
----------------
|
----------------
|
||||||
- CXTDT-556996 - RadioboxGroup – Accessibility - Voice over does not render the group position
|
- CXTDT-556996 - RadioboxGroup – Accessibility - Voice over does not render the group position
|
||||||
@ -7,6 +24,7 @@
|
|||||||
- CXTDT-563189 - Dropdown Select Readonly Border color
|
- CXTDT-563189 - Dropdown Select Readonly Border color
|
||||||
- CXTDT-555854 - Dropdown Select - spacing issues
|
- CXTDT-555854 - Dropdown Select - spacing issues
|
||||||
- CXTDT-563194 - Dropdown Select - missing transparentBackground option
|
- CXTDT-563194 - Dropdown Select - missing transparentBackground option
|
||||||
|
- CXTDT-552834 – TileContainer – Voice over is not rendering the information.
|
||||||
|
|
||||||
1.0.64
|
1.0.64
|
||||||
----------------
|
----------------
|
||||||
|
|||||||
11
VDS/SupportingFiles/vds-dev.xcconfig
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
//
|
||||||
|
// vds-dev.xcconfig
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Matt Bruce on 6/3/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
// Configuration settings file format documentation can be found at:
|
||||||
|
// https://help.apple.com/xcode/#/dev745c5c974
|
||||||
|
|
||||||
|
#include? "../../../workspaceSettings.xcconfig"
|
||||||
11
VDS/SupportingFiles/vds.xcconfig
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
//
|
||||||
|
// vds.xcconfig
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Matt Bruce on 6/3/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
// Configuration settings file format documentation can be found at:
|
||||||
|
// https://help.apple.com/xcode/#/dev745c5c974
|
||||||
|
|
||||||
|
#include? "../../../workspaceSettings.xcconfig"
|
||||||