PageSourceSearch

https://luxury-flowers.ru/catalog/view/javascript/suggestions.js?v=5.0048

js luxury-flowers.ru collected 2026-09-24 10:54:28 UTC 3,663 bytes, 113 lines download raw bytes

1/**
2 * initSuggestions('#modal_shipping_address', {
3 * requireHouse: true,
4  * buttonSelector: '.modal-form__btn',
5  * messageSelector: '#message',
6  * onAddressSelected: (data) => {
7  * },
8  * onAddressCleared: () => {
9  * }
10});
11 */
12
13function initSuggestions(inputElement = ".suggestions-input", options = {}) {
14    const token = "3c7b1a3a18c1140a8759b69b6ca156d85bc98bb0"
15    const classInitialized = "js-suggestions-initialized"
16
17    const {
18        requireHouse = false,
19        buttonSelector = null,
20        messageSelector = null,
21        onAddressSelected = null,
22        onAddressCleared = null,
23    } = options
24
25    let address = ""
26
27    if (!inputElement) {
28        console.warn("initSuggestions: input element not provided")
29        return
30    }
31
32    const button = buttonSelector
33        ? document.querySelector(buttonSelector)
34        : null
35    const message = messageSelector
36        ? document.querySelector(messageSelector)
37        : null
38
39    function setButtonState(enabled) {
40        if (!button) return
41        if (enabled) {
42            button.removeAttribute("disabled")
43        } else {
44            button.setAttribute("disabled", "true")
45        }
46    }
47
48    function setMessage(text) {
49        if (!message) return
50        message.innerText = text
51    }
52
53    if (!$(inputElement).hasClass(classInitialized)) {
54        $(inputElement)
55            .suggestions({
56                token,
57                type: "address",
58                params: {
59                    locations: [{ region: "Самарская" }],
60                    restrict_value: true,
61                    from_bound: { value: "city" },
62                    to_bound: { value: "house" },
63                },
64                onSelect: function (suggestion) {
65                    const hasHouse =
66                        suggestion.data.house &&
67                        suggestion.data.house.trim() !== ""
68                    if (requireHouse && !hasHouse) {
69                        setMessage("Укажите адрес до дома, чтобы продолжить")
70                        setButtonState(false)
71                    } else {
72                        setMessage("")
73                        setButtonState(true)
74                    }
75                    address = suggestion.value
76                    $(this).addClass("js-address-select")
77
78                    if (typeof onAddressSelected === "function") {
79                        onAddressSelected(suggestion.data)
80                    }
81                },
82                onSelectNothing: function () {
83                    const val = $(inputElement).val().trim()
84                    if (val === "") {
85                        setButtonState(true)
86                        setMessage("")
87                    } else {
88                        setButtonState(false)
89                        setMessage("Укажите адрес до дома, чтобы продолжить")
90                    }
91                    if (typeof onAddressCleared === "function") {
92                        onAddressCleared()
93                    }
94                },
95            })
96            .addClass(classInitialized)
97    }
98
99    $(inputElement).on("input", function () {
100        if ($(this).val().trim() === "") {
101            setButtonState(true)
102            setMessage("")
103        }
104    })
105
106    $(inputElement).on("change", function () {
107        if (address !== "") {
108            if ($(this).val().trim() !== address) {
109                $(this).removeClass("js-address-select")
110            }
111        }
112    })
113}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.