nathan
f7cf372f09
Et2Select: Better handling for when select_options & value get set one after the other
...
This caused selectbox to look empty, even though it had a value since the new menu-items hadn't been created when value was set
2022-08-03 16:04:08 -06:00
ralf
3a92e104da
fix TypeError for account-selection type "primary_group"
2022-07-29 09:24:57 +02:00
ralf
dbdb124c1c
fix not displayed selected account, caused by egw.accounts() returning value as number, not string
2022-07-27 11:46:45 +02:00
nathan
de73241166
Fix historylog multi-part entries did not actually show values
...
Also deals with some issues setting and missing cleaning of select_options
2022-07-26 11:41:07 -06:00
ralf
9f15169ced
convert hierarchical options / optgroups to a flat list and enable search for more than 100 options automatic
...
fixes timezone selection in preferences
2022-07-26 18:57:18 +02:00
nathan
df0b4f3afb
Fix free entries didn't get added properly for static option selects
2022-07-26 09:15:05 -06:00
nathan
c45661bbe4
Et2Select: No horizontal scrollbar on options
2022-07-26 09:12:52 -06:00
ralf
dee28cb53f
noLang only affects options, label, statustext, placeholder, emptyLabel get always translated
2022-07-26 15:46:42 +02:00
ralf
aa80b4027a
fix not translated tooltip, select options and emptyLabel
2022-07-26 15:06:07 +02:00
nathan
3cb8b1ecce
Get select hover border back
2022-07-22 10:44:37 -06:00
nathan
379ceeb3e5
Switch Et2Template to extend SlInput instead of LionInput
...
Also includes changes to how validation messages are handled to use our own stuff
2022-07-21 12:39:00 -06:00
ralf
b9d96ea3e9
change all attribute-names of new et2-* widgets to camelCase
...
only exception is select_options, never used in templates
2022-07-21 17:57:50 +02:00
ralf
d26ed9bfce
fix not displayed r/o et2-select-cat values
2022-07-21 11:50:05 +02:00
nathan
f72b842031
Let search take full size - empty label margin was taking some
2022-07-20 15:03:15 -06:00
nathan
3b147eaa49
Make sure options are clean before trying to merge them. Fixers broken historylog.
...
Also filter out duplicate options.
2022-07-19 14:20:39 -06:00
nathan
2bcebeed42
Add Et2SelectEmail.full_email property. Set to true when you need to see the full, original value
2022-07-19 13:18:51 -06:00
nathan
1a2e691cbb
Fix some bugs with static options being repeated
...
- Select Tab options being sent from server & cached
- Static options not properly set for all selects
2022-07-19 11:47:03 -06:00
nathan
5ee60c0af1
Fix option merge unique filter left out some options
2022-07-19 10:31:45 -06:00
ralf
6ab34234f5
fix error changing app in preferences
2022-07-19 18:10:12 +02:00
ralf
bec95a4a9d
et2-select-tab widget to fix common preferences not storing and some fixes
2022-07-19 15:17:43 +02:00
nathan
b064b84874
Fix some selects with static options did not render their options after ddd72fd51a
2022-07-18 10:41:48 -06:00
nathan
9ebc1e8f15
Et2Select: Avoid JS error if allowFreeEntries=true but editModeEnabled=false
2022-07-15 13:08:57 -06:00
nathan
ddd72fd51a
Et2Select: Fix selects with static options from the server would not consistently keep any additional options set.
...
Creation / lifecycle would sometimes set the extra options several times, and depending on the timing of the server response they might get overwritten, or overwrite the server options. Now keeping them separate to avoid this.
2022-07-15 12:56:24 -06:00
nathan
2571d90691
Follow my own advice and split out content into an overridable sub-template in case we need it
2022-07-15 09:30:12 -06:00
nathan
6d97cb17f4
Et2EmailTag: If email has name in it, or is a known contact, show just the name. Show name + email on hover.
2022-07-14 16:54:18 -06:00
nathan
28a289e5e1
Check if email is known contact immediately, previously waited for a mouseover
2022-07-14 15:34:58 -06:00
nathan
0034a8fe1c
Thoroughly remove search icon, not just hide it.
2022-07-14 14:17:50 -06:00
nathan
53e5e45a5d
Better handling for options with more properties set (title, icon)
...
Previously they were being discarded
2022-07-14 13:16:48 -06:00
nathan
523c785049
Et2Select: Fix manual message was repeated for each selected value. Once is enough.
2022-07-14 11:33:35 -06:00
nathan
2c08542529
Better handling of select validation
2022-07-12 16:40:38 -06:00
nathan
d9f094053f
Et2Select: Ellipsis on tags that are too long
2022-07-12 11:36:18 -06:00
nathan
e8e3d2fc38
Et2Select layout improvements
...
- Better sizing when row is set
- Always show contact / + for EmailTag instead of just on hover
2022-07-12 10:50:11 -06:00
nathan
ad82ea8faf
Et2Select layout improvements
...
- Added RowLimitedMixin to limit rows
- when multiple=true tags take full width by default, but intelligently resize
- No longer showing search icon
- Move Et2EmailTag add / CRM button to left of remove button
2022-07-11 17:27:17 -06:00
nathan
0ca7508cd3
Select bugfixes
...
- If value is changed because it's not a valid option, that might need a refresh
- If empty_label is changed, we need to update that
2022-07-11 11:01:42 -06:00
nathan
ed16ce52a2
Change nextmatch headers to use web components
2022-07-07 13:18:42 -06:00
nathan
19a45164f9
Change static cat select options to always use promise
2022-07-07 10:49:28 -06:00
nathan
dc8809ef87
Et2Select + Search: Always need to bind our own change handler to catch & cancel search textbox changes or they bubble
2022-07-07 10:47:14 -06:00
nathan
4936c0e043
Et2SelectCategory: keep options sent from server
...
For example, addressbook index does this.
2022-07-07 10:06:41 -06:00
Hadi Nategh
7a4193073b
Make sure we don't reevaluate the value when there's already a value set (eg. given object of options with value attribute set)
2022-07-07 11:54:24 +02:00
nathan
46b172c88e
Et2Select: In some cases the change event from the search input was triggering an extra widget change event
2022-07-06 11:22:10 -06:00
ralf
489eb615ac
fix validation in et2-select had problems with value being an array
...
eg. mail.compose always displayed "Invalid email"
running validator now for each array element or "" for an empty array
2022-07-06 10:33:06 +02:00
nathan
761b0ee6cc
Fix for double-submit caused by change handler bound twice
2022-07-05 13:15:32 -06:00
nathan
5dc1c74167
SearchMixin: Actually pass search options
2022-07-05 10:16:05 -06:00
nathan
31e476089c
Et2Select: Fix missing initial value when initial value is not in select_options
...
Our custom setter was not being called for some reason so option cleaning was not being done.
2022-07-04 15:09:16 -06:00
nathan
36c6df9685
Remove InvokerMixin from Et2Select, we cover the functionality in other ways.
...
InvokerMixin still used in other widgets
2022-06-30 09:39:22 -06:00
nathan
7c7b81201f
Implement missing validation error for Et2Select
2022-06-29 11:49:24 -06:00
nathan
0842eb4376
Finish missing doc
2022-06-29 09:24:12 -06:00
nathan
4f4b83733c
Mail: Re-size header labels in display popup, change mail date widget to date-time-today
2022-06-28 10:18:42 -06:00
nathan
bb48e4ecee
Select + search: don't try to open search when readonly
2022-06-24 14:27:49 -06:00
nathan
0f5cb9f9d3
Select styling improvements
...
- support for Shoelace's size property
- relative sizing for EmailTag's add icon height
2022-06-24 14:12:04 -06:00
nathan
d11be10fa1
Et2SelectEmail: Add button on hover to add a new contact with the email
...
(multiple)
2022-06-24 12:10:10 -06:00
nathan
9ca78de12f
Et2Select: Fix empty label was not being shown for invalid values
2022-06-23 15:56:28 -06:00
ralf
8dd6dcf97c
remove unnecessary adding of free entries to select_options
2022-06-23 21:28:01 +02:00
nathan
1cc2cd5e3e
Et2Select + Search: Fix change event fired while widget still had old value
...
The search box was firing its own change event, triggering the handler. Now SearchMixin swallows that event preventing it from triggering.
2022-06-23 10:36:54 -06:00
ralf
f2e20eddba
fix addressbook edit for new Et2SelectCountry&State:
...
- using allowFreeEntries for custom country-names and storing, as before, region-name not the -code
- also fix flags to show nothing for custom / free country-names
Not entirely happy about it, but not willing to spend/waste more time on this tiny feature
2022-06-23 10:06:01 +02:00
ralf
9157a37480
fix URL of flags.css include
2022-06-23 07:19:47 +02:00
nathan
9b3de5db95
Et2SelectCountry: Use CSS for flag images
2022-06-22 16:13:58 -06:00
nathan
e9af38081e
Move email-specific D-n-d into Et2SelectEmail class
2022-06-22 14:36:38 -06:00
nathan
874371483a
Et2Select: Fix multiple + allowFreeEntries did not work together
2022-06-22 14:28:37 -06:00
nathan
d9400430e5
Mail: Use et2-select-email for displaying addresses in preview
2022-06-21 16:34:57 -06:00
nathan
61f22d67f3
Double thickness of colored category border in Et2SelectCategory
2022-06-21 09:22:39 -06:00
Hadi Nategh
ac171a1076
Implements DND for et2-select-email tags
2022-06-21 16:21:23 +02:00
nathan
261b104875
Looks like SearchMixin no longer needs special handling for change event and it was not working with onchange attribute in some cases.
2022-06-20 11:18:15 -06:00
nathan
e44ca6183a
Promote select category to its own file
2022-06-20 09:35:38 -06:00
ralf
8228104b82
add extra parameter return_promise to StaticOptions.cached_server_side and using that for Et2SelectCountry to add flags and their css class
2022-06-20 17:01:28 +02:00
ralf
96109e0f26
Several account or contact edit fixes
...
- fix no groups were selected (as they have numeric values)
- fix size of country and state selection
- WIP adding flags to select-country
- WIP fixing selecting a country set country_code for state selection
2022-06-18 15:06:50 +02:00
ralf
7dc591b2c9
fix TypeError this === undefined
2022-06-17 22:43:35 +02:00
nathan
fdd6f23560
Better readonly styling
2022-06-17 14:06:12 -06:00
nathan
f13bf7b154
Et2SelectThumbnail
2022-06-17 13:07:33 -06:00
nathan
cfce00f7ea
Et2Select: Deal with initial value of multiple set as CSV
2022-06-17 11:41:29 -06:00
nathan
f2c57c5e75
Et2Select: Fix search icon appearing everywhere
2022-06-17 08:53:15 -06:00
nathan
d525918391
SearchMixin: Stick with repeat() over map(), it's slightly more efficient
2022-06-16 11:05:13 -06:00
nathan
851a054599
Select / Search bugs:
...
- search result would only be shown once even if next search included it
- selected values disappear when starting a new search
- loading spinner was not shown
2022-06-16 11:05:13 -06:00
nathan
6b950900ee
SearchMixin: Avoid error if tag can't be found when we go to scroll to it
2022-06-16 11:05:13 -06:00
nathan
260d8f523a
Get category icons & colors working for select category
...
Also some refactoring of things to where they should be
2022-06-15 16:43:39 -06:00
nathan
2a79264674
Select / Search CSS:
...
- Add some spacing
- Fix disappearing images, when they were in the search results
- Pass option classes to tag
- Move tag image to its own method for overriding
2022-06-14 17:31:39 -06:00
nathan
e109b1d85b
Always use avatar for user image in Et2SelectAccount tag
2022-06-14 17:29:58 -06:00
nathan
67b9102a69
Et2Select: Allow dropdown option list to be wider than the field
2022-06-14 15:14:17 -06:00
nathan
3f3e7559f1
Select / Search CSS:
...
- Refocus search when clearing a single value
2022-06-14 10:06:27 -06:00
nathan
5f77d0c644
Select / Search CSS:
...
- Limit height of tag area (3 lines), use scrollbar if we get too many
2022-06-14 09:37:21 -06:00
nathan
003f1255d7
Select / Search CSS:
...
- Let search input take full space for single-value search selects
2022-06-14 09:09:11 -06:00
nathan
a7874ecb63
Select / Search CSS:
...
- Keep tags visible while searching, adding or editing a free entry
- hide selected options from dropdown
- double-click to edit free entries
2022-06-13 17:22:35 -06:00
nathan
a26b775505
Select / Search tag CSS:
...
- Pill tags
- Keep tag from overflowing
- Fix remove icon cut off
2022-06-13 17:22:35 -06:00
nathan
89a73ac47d
Select / Search CSS:
...
- Hide selected options from dropdown
- Tab & Comma (,) now end a freeEntry, was just Enter before
2022-06-13 09:58:46 -06:00
nathan
8828770c4f
Select / Search CSS:
...
- Fix tag remove button alignment
2022-06-13 08:25:16 -06:00
ralf
980f7cb0df
fix first category was always selected in calendar.edit as somehow select_options were set before multiple
...
removed the deduplicate select-first-option code now in favor of the one in firstUpdate
also automatic convert empty_label for et2-select multiple into a placeholder
2022-06-13 14:39:01 +02:00
ralf
b24b6b42e4
fix ReferenceError: value is not defined
2022-06-13 12:34:25 +02:00
nathan
1215626473
Select / Search CSS:
...
- Promote image styling from Et2LinkAppSelect to all Selects
- fix double scrollbar if there are a lot of options
- different cursor for editable tags
- align +# right to make it stand out a little more
2022-06-10 14:11:57 -06:00
nathan
a7cafb590c
Et2SelectAccount: Enable searching
2022-06-10 13:56:55 -06:00
nathan
b47d6fc702
Et2SelectAccount: Fix TypeError: Cannot set property select_options of #<Et2SelectAccount> which has only a getter
2022-06-10 10:42:37 -06:00
nathan
cf151afff8
Clean up some TypeScript type issues
...
Putting the constructor type fixes some complaints about our widgets not being LitElements
2022-06-10 10:25:31 -06:00
nathan
531cc473e2
Et2Select: Implement allowFreeEntries & editModeEnabled properties
...
Also added Et2SelectEmail, which uses them
2022-06-10 10:11:34 -06:00
ralf
d98978ddd3
fix current user in timesheet not selected (was a numeric value) and empty_label not used, if no matching option for the value
2022-06-10 13:07:27 +02:00
nathan
45ccceb1c7
Fix Et2Select was losing options set in template
...
All JS tests now pass. yay.
2022-06-08 14:57:26 -06:00
nathan
b7258692a4
Et2Select: Fix double change event
...
Caused double submit (which failed) in infolog when you changed type
2022-06-08 14:01:00 -06:00
nathan
408eda8eb3
Fix some JS tests
...
- Basic selectbox tests failed to set label
2022-06-07 16:55:58 -06:00
nathan
94d534d897
Et2Select bugs:
...
- multiple always had the first option selected
- removing multiple options did not trigger change event
2022-06-06 16:41:29 -06:00
nathan
796c0a33df
Et2SelectCat: Add in category colors & icons
2022-06-06 16:09:08 -06:00
ralf
6ae098db93
enable taglist and taglist-cat mapped to et2-select-* multiple=true
...
also adding cat_N class to categories (need there CSS adapted)
2022-06-06 18:21:31 +02:00
nathan
e9d3db9b6d
Et2Select: Add missing support for options on static type options (number, percent)
2022-06-03 10:19:05 -06:00
nathan
f07aacaeaf
Work on Search/LinkEntry
...
- Fix events were messed up after search
2022-06-02 15:45:23 -06:00
nathan
5f7b9bd5f4
Work on LinkEntry
...
- Show / hide app select depending on has current value
- Hide current value when searching to get more space
2022-06-02 11:52:27 -06:00
nathan
23f9015331
Fix Et2Select / Et2LinkEntry clear button did nothing
...
Automatic select first entry was re-setting the value after clearing
2022-06-02 09:59:08 -06:00
ralf
a720a7f48a
remove unnecessary getValue()
2022-06-02 16:31:27 +02:00
ralf
fc227f82d0
fix TypeError, if no options are set and remove unnecessary getValue()
2022-06-02 16:29:58 +02:00
ralf
a9e180a9fb
fix mixup of this.value, Lion this.modelValue and old get/set_value
...
causing eg. numeric values not to be cast to string and therefore not selecting their option
2022-06-02 16:12:38 +02:00
ralf
c251e2f185
remove removing of empty description and label widgets
...
also make sure option.value is a string, as sl-select seems to use === to calculate matches so option with value 0 is not selected by a value of '0'
2022-06-02 13:45:34 +02:00
nathan
7cb13015ae
Fix item class was not correct
2022-06-01 09:41:53 -06:00
nathan
2b68b6cbbe
Work on LinkEntry
...
- fix missing app select
- add clear button
- use request() instead of json() to query server
- add optional class property to SelectOption
- move cleaning select options to its own function so we can use it anywhere
- Use separate render to keep local / remote options separate. Local options stay in select_options.
2022-06-01 09:25:11 -06:00
ralf
0aa813a0ff
got LinkEntry mostly working
2022-06-01 16:05:34 +02:00
nathan
9b0e1b9206
Work on LinkEntry
2022-05-31 13:41:39 -06:00
nathan
c572fa637d
Fix conflict between Et2Select static type options & custom options resulted in losing the type options
2022-05-31 13:41:39 -06:00
nathan
bc045bf0da
Add SearchMixin
...
A little clunky and still missing server-side
2022-05-30 17:05:38 -06:00
ralf
0b547c921d
fix error for typeof this.value !== 'string', eg. number, undefined, ...
2022-05-29 09:53:41 +02:00
nathan
7f1cd117a7
Fix select change event not firing, initial value not showing
2022-05-27 15:39:51 -06:00
nathan
c212734618
Switch Et2Select to be based on Shoelace select instead of LionSelect
2022-05-27 14:12:31 -06:00
nathan
17d2e2cb5c
Change style of parameter type declaration to make sure it transformAttributes handles it correctly. Objects were still parsed as string, resulting in "[Object object]"
2022-05-13 14:22:44 -06:00
nathan
b69c5e7cbf
Fix IDE errors without changing internal data type
2022-05-13 09:07:47 -06:00
nathan
de0c9aa3f4
Fix incorrect type issues on options
2022-05-13 09:02:22 -06:00
ralf
ac5932240b
remove old expose view / blueimp gallery and all widgets which have been using them:
...
- new web-components are unconditionally replacing them via the preprocessor
- some widgets (eg. et2_description) could not be removed as other legacy widgets are extending them, but they are no longer registered
- as there are many places using et2_createWidget('description', ...), et2_description returns now web-components for no longer existing widgets
2022-05-13 11:59:13 +02:00
nathan
8172f6e72d
Et2DropdownButton WIP
2022-05-12 15:22:49 -06:00
nathan
797c615060
Move Et2Box into Layout
2022-05-06 11:57:53 -06:00
nathan
10af4f7514
Historylog + webcomponents
...
- historylog widget now uses webcomponents for timestamp & user, and whenever possible for values
- History::get_rows() formats customfield date/date-time values as needed
- implement setDetachedAttributes(), if nextmatch & historylog are calling them on webcomponents, might as well use that to set what they pass
2022-05-03 11:01:42 -06:00
nathan
215dc21ec5
Avoid error if label is missing
2022-05-02 17:43:10 -06:00
ralf
74ad3ba7b0
change egw.jsonq() and egw.link_title() to return promises
...
* egw.jsonq() now always returns a promise like egw.request(), still supporting old callback syntax
* egw.link_title(_app, _id, _callback, _context, _force_reload) supports boolean values for _callback (to not break existing code)
- false: just a cache lookup (like current call with just 2 parameters), returning null, if no title is cached, or the title
- true: always return a promise, which might already be resolved, if title was cached
- function: also returns a promise and calls the callback
--> calling egw.link_title(_app, _id) without 3rd parameter is deprecated now (gives a console.trace), to be changed in future to always return a promise, unless called with false, to just return a cache-lookup
* Et2SelectAccountReadonly and et2_link_widget is changed to use the new/updated syntax with promises
2022-05-02 11:27:33 +02:00
nathan
de2dade286
Et2SelectReadonly: Make sure we're dealing with string value
2022-04-29 14:37:52 -06:00
nathan
4f17302bb1
CSS / Layout cleanup - better autosize
...
- More consistent sizing/position for invoker
2022-04-22 15:22:31 -06:00
nathan
f8f04071be
CSS / Layout cleanup
...
- Remove margin from input,button,select
- Fix some spacing issues
- Switch selects from display:inline-block to display:block so they take up all parent's space
- Let background (required) color show through select tag
- Some layout tweaks on mail account template
2022-04-22 13:07:22 -06:00
nathan
a83f9a1ec9
Get tests passing again
...
- Dates have their input as slotted, not internal
- Selects have .select_options, not .get_select_options()
- Remove this.egw().lang() use from Et2InvokerMixin._invokerTemplate()
2022-04-01 12:52:47 -06:00
nathan
0c8824c496
Fix addressbook contact type filter was sometimes 'D' after being initialized to 'n'
...
When nextmatch moved the template in the DOM, we were re-adding already existing options which re-set the value.
2022-04-01 11:12:19 -06:00
ralf
a45d26511b
fix not set invoker for expand_multiple_rows attribute
2022-03-18 22:26:15 +02:00
ralf
b9cca9c5ff
using set/get select_option plus a set_selection_options marked as deprecated
...
- get_select_options seems to be nowhere in use, so I did not implement it
- Et2Select* widgets with static options assign them in their constructor (like the r/o ones)
- removed a jQuery.proxy call, which we dont want in new code
2022-03-16 22:36:43 +02:00
ralf
7a749a8f54
fix instead of all only last option was selected sometimes
...
because multiple property was not yet synced to DOM node
2022-03-15 11:43:55 +02:00
ralf
293e9f2fc6
Implement multi-select value as string[] or comma-separated
...
Had to overwrite some formMixin methods, which considered everything not string as invalid and set/get value to do the right thing for multi-select
Not sure if code should go to Et2WidgetWithSelectMixing to be shared with TagList ...
2022-03-14 21:13:47 +02:00
ralf
940e1b12c1
Implement expand_multiple_rows attribute for Et2Select using Et2InvokerMixin
2022-03-12 14:49:25 +02:00
ralf
dd7ebad1e7
Implement et2-select-account
2022-03-10 20:20:32 +02:00
ralf
9285b87a92
implement multiple attribute for et2-select reflecting it to selectbox
...
fixing TypeError set_multiple is not a function
2022-03-10 15:48:27 +02:00
nathan
aff71549a2
Move some code out of Et2Select into parent mixin for better re-use
...
Any child that has selectbox type functionality (extends Et2WidgetWithSelectMixin) needs to implement:
- _optionTargetNode() : HTMLElement
- _optionTemplate(option : SelectOption) : TemplateResult
2022-03-03 10:38:56 -07:00
ralf
5ff96e7818
fix last option select instead of empty label or any other option
...
eg. "shared by me" in Addressbook instead of "All contacts"
caused by this._inputNode not available when set_value was called
2022-03-01 18:29:13 +02:00
ralf
36e3bd5de0
fix typo modalValue instead of modelValue to get validation (required) working
...
Had to overwrite formatter as it gave an error for accessing not yet set _inputNode
2022-03-01 16:51:40 +02:00
Hadi Nategh
2d6770ebfa
Fix missing Et2WidgetWithSelect class
2022-03-01 13:31:13 +01:00
Hadi Nategh
08549e25da
Make Et2WidgetWithSelect a Dedup Mixin in order to make it available cross widgets
2022-03-01 12:35:33 +01:00
ralf
9260f25476
fist option with value of 0 was not selected
2022-02-28 17:42:57 +02:00
ralf
eff1f10484
fix sometimes first non-empty label used for empty value
...
seems update got triggered before empty_label was set
2022-02-28 15:21:23 +02:00
ralf
e567a0d465
fix et2-select use first option, not just empty_lable, if value is not in options
2022-02-28 14:11:57 +02:00
nathan
f0455b2ad2
Show empty_label when given a value that is not in the list of options
2022-02-23 13:13:14 -07:00
ralf
c2166c5750
fix select-boxes submit their old value, if they are onchange="1"
...
@Nathan: Not sure if this is the right fix, but I can't see where we use Lit's FormatMixing, which defines serializedValue (and therefore select-box always returns the old modalValue)
2022-02-21 20:58:56 +02:00
nathan
9079f97d7e
Fix selectbox values were not set.
...
Paying more attention to the WebComponent life cycle here, rather than what our widgets do - connectedCallback(), requestUpdate(), updated() are more important than loadFromXML(), etc. which are only used when loading from the .xet the first time.
2022-02-18 12:02:27 -07:00
nathan
1776dd9005
Fix some readonly selectboxes were missing options
2022-02-17 16:37:59 -07:00
nathan
be4633c9fa
Implement et2-date-duration
2022-02-16 16:45:40 -07:00